{ "cells": [ { "cell_type": "markdown", "id": "7d230d89-bc5c-4cba-b79b-c6d1ae0ec741", "metadata": {}, "source": [ "# Input dan Output di Python\n", "Operasi Input/Output (IO) dalam pemrograman merujuk pada proses komunikasi antara program komputer dan dunia luar, seperti pengguna atau perangkat keras seperti disk drive, jaringan, atau printer. IO merupakan bagian penting dari hampir semua program, karena memungkinkan program untuk berinteraksi dengan lingkungannya dan melakukan tugas-tugas seperti membaca input pengguna, menampilkan output, membaca atau menulis file, berkomunikasi melalui jaringan, dan banyak lagi. Ada dua jenis operasi IO utama dalam pemrograman:\n", "1. Input: proses mengambil data dari sumber eksternal dan membawa mereka ke dalam program. Contohnya\n", " * input termasuk membaca input dari pengguna melalui keyboard\n", " * membaca data dari file, atau\n", " * menerima data dari jaringan.\n", "2. Output: proses mengirimkan data dari program ke luar. Contohnya:\n", " * output termasuk menampilkan hasil perhitungan ke layar\n", " * menulis data ke file, atau\n", " * mengirim data melalui jaringan." ] }, { "cell_type": "markdown", "id": "825681af-d765-4409-9ec7-29d2a5a4f1ec", "metadata": {}, "source": [ "Dalam banyak bahasa pemrograman, IO diimplementasikan menggunakan fungsi atau metode khusus yang disediakan oleh bahasa tersebut atau melalui pustaka standar. Berikut adalah contoh penggunaan IO dalam beberapa bahasa pemrograman umum:" ] }, { "cell_type": "code", "execution_count": null, "id": "cec765eb-2046-46f9-a350-0aa90e19e303", "metadata": {}, "outputs": [], "source": [ "user_input = input(\"Masukkan sesuatu: \")\n", "print(\"Anda memasukkan:\", user_input)" ] }, { "cell_type": "code", "execution_count": null, "id": "6425a665-9795-4729-98fa-a460c12b64c5", "metadata": {}, "outputs": [], "source": [ "with open(\"data.txt\", \"w\") as file:\n", " file.write(\"Ini adalah baris pertama.\\nIni adalah baris kedua.\")" ] }, { "cell_type": "markdown", "id": "1f198bac-1d5e-4737-8b06-1dbf24a6bf96", "metadata": {}, "source": [ "## A. Membuat dan Menghapus Folder\n", "Anda dapat membuat dan menghapus folder (direktori) menggunakan modul bawaan Python yang disebut os (sistem operasi). Modul ini menyediakan berbagai fungsi yang memungkinkan Anda berinteraksi dengan sistem operasi, termasuk membuat dan menghapus folder. Berikut adalah contoh cara melakukannya:" ] }, { "cell_type": "code", "execution_count": null, "id": "b1dea1a5-d0ff-47b6-be9c-ed168e14fe42", "metadata": {}, "outputs": [], "source": [ "# Membuat folder\n", "import os\n", "\n", "folder_name = \"nama_folder_baru\"\n", "\n", "# Memeriksa apakah folder sudah ada sebelumnya\n", "if not os.path.exists(folder_name):\n", " os.makedirs(folder_name)\n", " print(f\"Folder '{folder_name}' berhasil dibuat.\")\n", "else:\n", " print(f\"Folder '{folder_name}' sudah ada.\")" ] }, { "cell_type": "markdown", "id": "1e8b9233-0bdc-43c3-b8ff-163de848fd88", "metadata": {}, "source": [ "Dalam contoh di atas, kita menggunakan fungsi os.makedirs() untuk membuat folder baru. Fungsi ini juga akan membuat direktori induk jika belum ada." ] }, { "cell_type": "code", "execution_count": null, "id": "09620034-9be5-4d3e-8404-2b8c380092d9", "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "folder_name = \"nama_folder_baru\"\n", "\n", "if os.path.exists(folder_name):\n", " os.rmdir(folder_name)\n", " print(f\"Folder '{folder_name}' berhasil dihapus.\")\n", "else:\n", " print(f\"Folder '{folder_name}' tidak ditemukan.\")\n" ] }, { "cell_type": "markdown", "id": "1ed21c19-d1d5-41f1-b616-90f9a5e0dcf7", "metadata": {}, "source": [ "Dalam contoh di atas, kita menggunakan fungsi os.rmdir() untuk menghapus folder. Namun, perlu diingat bahwa fungsi ini hanya dapat menghapus folder yang kosong. Jika folder berisi file atau subfolder, Anda harus menggunakan fungsi lain seperti shutil.rmtree() untuk menghapusnya beserta isinya:" ] }, { "cell_type": "code", "execution_count": null, "id": "41d0964c-9bc7-4727-a32f-f39fc75507ee", "metadata": { "scrolled": true }, "outputs": [], "source": [ "import shutil\n", "\n", "folder_name = \"nama_folder_baru\"\n", "\n", "if os.path.exists(folder_name):\n", " shutil.rmtree(folder_name)\n", " print(f\"Folder '{folder_name}' berhasil dihapus beserta isinya.\")\n", "else:\n", " print(f\"Folder '{folder_name}' tidak ditemukan.\")" ] }, { "cell_type": "markdown", "id": "0d25af13-2b9c-4393-88fa-b4a50964f013", "metadata": {}, "source": [ "## B. Menulis dan Membaca Berkas\n", "Operasi berkas (file) dalam Python memungkinkan Anda menulis dan membaca data dari berkas teks. Dengan mode \"w\" (write), Anda dapat menulis teks ke berkas. Dengan mode \"r\" (read), Anda dapat membaca isi berkas. Dapat membaca per baris dengan readlines(). Pernyataan with digunakan untuk mengelola berkas secara aman. Berhati-hatilah dengan mode \"w\" karena menghapus isi berkas sebelum menulis. Ingat untuk menutup berkas setelah penggunaan." ] }, { "cell_type": "code", "execution_count": null, "id": "1f297552-d665-4d73-b4cb-e2af922c1800", "metadata": {}, "outputs": [], "source": [ "# Menulis ke Berkas\n", "file_name = \"data.txt\"\n", "\n", "# Membuka berkas untuk penulisan (mode \"w\")\n", "with open(file_name, \"w\") as file:\n", " file.write(\"Ini adalah baris pertama.\\n\")\n", " file.write(\"Ini adalah baris kedua.\\n\")\n", " \n", "print(\"Tulisan berhasil ditambahkan ke berkas.\")" ] }, { "cell_type": "markdown", "id": "991b3050-1119-4e85-b1e4-865966c1205c", "metadata": {}, "source": [ "Dalam contoh di atas, kami membuka berkas dengan mode \"w\" (write) menggunakan pernyataan with. Pernyataan with memastikan bahwa berkas ditutup dengan benar setelah penulisan selesai. Fungsi write() digunakan untuk menambahkan teks ke berkas." ] }, { "cell_type": "code", "execution_count": null, "id": "26b90bd6-8aec-4309-816f-53526d94f992", "metadata": {}, "outputs": [], "source": [ "# Membaca ke Berkas\n", "file_name = \"data.txt\"\n", "\n", "# Membuka berkas untuk membaca (mode \"r\")\n", "with open(file_name, \"r\") as file:\n", " content = file.read()\n", " print(content)" ] }, { "cell_type": "markdown", "id": "ae54908f-5537-430e-984f-48f72539bc8d", "metadata": {}, "source": [ "Dalam contoh di atas, kami membuka berkas dengan mode \"r\" (read) menggunakan pernyataan with. Fungsi read() digunakan untuk membaca seluruh isi berkas ke dalam variabel content, dan kemudian isi tersebut dicetak." ] }, { "cell_type": "code", "execution_count": null, "id": "b38300b0-7b9b-43ac-a5dc-a8dca750e7e8", "metadata": {}, "outputs": [], "source": [ "# Membaca perbaris\n", "file_name = \"data.txt\"\n", "\n", "# Membuka berkas untuk membaca (mode \"r\")\n", "with open(file_name, \"r\") as file:\n", " lines = file.readlines()\n", " for line in lines:\n", " print(line.strip()) # Menghapus karakter newline (\\n) di akhir setiap baris" ] }, { "cell_type": "code", "execution_count": null, "id": "f12f00d0-3f1d-4f2c-93c7-0926ef4fcb64", "metadata": {}, "outputs": [], "source": [ "# Membuat buku catatan\n", "def tulis_catatan(catatan):\n", " with open(\"catatan.txt\", \"a\") as file:\n", " file.write(catatan + \"\\n\")\n", " print(\"Catatan berhasil ditambahkan.\")\n", "\n", "def main():\n", " print(\"Aplikasi Catatan\")\n", " catatan_baru = input(\"Masukkan catatan baru: \")\n", " tulis_catatan(catatan_baru)\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "code", "execution_count": null, "id": "8bab4f03-54dc-447e-8883-8b75ba1e18e8", "metadata": {}, "outputs": [], "source": [ "# Membaca buku catatan\n", "def baca_catatan():\n", " with open(\"catatan.txt\", \"r\") as file:\n", " catatan = file.read()\n", " return catatan\n", "\n", "def main():\n", " print(\"Aplikasi Catatan\")\n", " catatan = baca_catatan()\n", " print(\"Catatan Anda:\")\n", " print(catatan)\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] }, { "cell_type": "markdown", "id": "ea1bff8f-8741-414c-8e6c-9fa8e6d9e044", "metadata": {}, "source": [ "## C. Mode Pembukaan Berkas\n", "Mode pembukaan berkas mengontrol bagaimana berkas akan diakses dan dioperasikan saat dibuka. Di Python, Anda dapat menggunakan beberapa mode pembukaan berkas yang berbeda. Berikut adalah beberapa mode umum yang sering digunakan:\n", "1. \"r\" (read): digunakan untuk membaca berkas. Anda dapat membaca isi berkas, tetapi tidak dapat menulis ke dalamnya. Jika berkas tidak ada, akan muncul kesalahan.\n", "2. \"w\" (write): digunakan untuk menulis ke berkas. Jika berkas sudah ada, isi lama akan dihapus. Jika berkas belum ada, berkas baru akan dibuat.\n", "3. \"a\" (append): digunakan untuk menulis ke berkas dengan menambahkan data ke akhir berkas tanpa menghapus isi lama. Jika berkas belum ada, berkas baru akan dibuat.\n", "4. \"x\" (exclusive creation): digunakan untuk membuat berkas baru, tetapi hanya jika berkas tersebut belum ada. Jika berkas sudah ada, akan muncul kesalahan.\n", "5. \"b\" (binary mode): digunakan bersama dengan mode lain (misalnya \"rb\" atau \"wb\") dan mengindikasikan bahwa berkas akan dibuka dalam mode biner. Ini berguna saat Anda bekerja dengan berkas biner, seperti gambar atau file biner lainnya." ] }, { "cell_type": "code", "execution_count": null, "id": "77eb30d4-07f5-43cd-b0c2-5fc15b8a6ed7", "metadata": {}, "outputs": [], "source": [ "# Membuka berkas untuk membaca\n", "with open(\"data.txt\", \"r\") as file:\n", " content = file.read()\n", "\n", "# Membuka berkas untuk menulis (menghapus isi lama)\n", "with open(\"data.txt\", \"w\") as file:\n", " file.write(\"Ini adalah isi baru.\")\n", "\n", "# Membuka berkas untuk menulis (tanpa menghapus isi lama)\n", "with open(\"data.txt\", \"a\") as file:\n", " file.write(\"\\nIni adalah tambahan isi.\")\n", "\n", "# Membuka berkas untuk menulis (hanya jika berkas belum ada)\n", "with open(\"data.txt\", \"x\") as file:\n", " file.write(\"Ini adalah berkas baru.\")" ] }, { "cell_type": "markdown", "id": "cbd441fe-b4c5-4b50-863a-8766ccffc996", "metadata": {}, "source": [ "## D. Exception dan Contoh Kasus IO di Python\n", "Dalam pemrograman, exception (pengecualian) adalah kejadian yang terjadi saat ada kesalahan atau situasi tidak terduga yang mengganggu jalannya program. Exception dalam operasi Input/Output (IO) Python dapat terjadi saat Anda membuka, membaca, menulis, atau menutup berkas. Ketika exception terjadi, program dapat berhenti secara tiba-tiba jika tidak ditangani dengan benar." ] }, { "cell_type": "markdown", "id": "bcf81858-2062-4ca5-ba62-845e994df27c", "metadata": {}, "source": [ "**Beberapa exception yang umum terkait operasi IO di Python adalah:**\n", "1. FileNotFoundError: Terjadi saat berkas yang dicoba dibuka tidak ditemukan.\n", "2. PermissionError: Terjadi saat Anda mencoba membuka berkas tanpa izin yang cukup.\n", "3. IOError: Merupakan exception umum yang terjadi ketika ada masalah IO umum, seperti kesalahan saat membaca atau menulis berkas.\n", "4. OSError: Terjadi ketika terdapat kesalahan pada operasi sistem, seperti kesalahan saat membuka atau menutup berkas.\n", "\n", "Untuk menangani exception dalam operasi IO, Anda dapat menggunakan blok try dan except. Berikut contoh penggunaannya:" ] }, { "cell_type": "code", "execution_count": 2, "id": "71880434-dc4f-4fc9-9362-127704641fe9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Berkas tidak ditemukan.\n" ] } ], "source": [ "try:\n", " with open(\"data.txt\", \"r\") as file:\n", " content = file.read()\n", "except FileNotFoundError:\n", " print(\"Berkas tidak ditemukan.\")\n", "except PermissionError:\n", " print(\"Anda tidak memiliki izin untuk membuka berkas.\")\n", "except IOError as e:\n", " print(\"Terjadi kesalahan IO:\", e)\n", "except OSError as e:\n", " print(\"Terjadi kesalahan sistem:\", e)\n", "else:\n", " print(\"Berkas berhasil dibaca.\")" ] }, { "cell_type": "markdown", "id": "bad232f0-da2d-4d8e-a3a8-d7033b863c87", "metadata": {}, "source": [ "**Contoh Kasus IO di Python**" ] }, { "cell_type": "code", "execution_count": null, "id": "9af517ba-50fd-4918-a14d-3078650406c2", "metadata": {}, "outputs": [], "source": [ "# Menyimpan data dalam format CSV\n", "import csv\n", "\n", "data = [\n", " {\"nama\": \"John\", \"usia\": 30, \"pekerjaan\": \"Pengembang\"},\n", " {\"nama\": \"Jane\", \"usia\": 25, \"pekerjaan\": \"Desainer\"}\n", "]\n", "\n", "with open(\"data.csv\", \"w\", newline=\"\") as csv_file:\n", " fieldnames = [\"nama\", \"usia\", \"pekerjaan\"]\n", " writer = csv.DictWriter(csv_file, fieldnames=fieldnames)\n", " writer.writeheader()\n", " writer.writerows(data)" ] }, { "cell_type": "code", "execution_count": null, "id": "cf96cbf8-03df-47ea-b579-66f581a698a6", "metadata": {}, "outputs": [], "source": [ "import json\n", "\n", "data = [\n", " {\"nama\": \"John\", \"usia\": 30, \"pekerjaan\": \"Pengembang\"},\n", " {\"nama\": \"Jane\", \"usia\": 25, \"pekerjaan\": \"Desainer\"}\n", "]\n", "\n", "with open(\"data.json\", \"w\") as json_file:\n", " json.dump(data, json_file, indent=4)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "a1232dfe-d154-4226-81ed-2120d812f09c", "metadata": {}, "outputs": [], "source": [ "import yaml\n", "\n", "data = [\n", " {\"nama\": \"John\", \"usia\": 30, \"pekerjaan\": \"Pengembang\"},\n", " {\"nama\": \"Jane\", \"usia\": 25, \"pekerjaan\": \"Desainer\"}\n", "]\n", "\n", "with open(\"data.yaml\", \"w\") as yaml_file:\n", " yaml.dump(data, yaml_file, default_flow_style=False)" ] }, { "cell_type": "markdown", "id": "318b586c-415e-45ae-9420-a53d330af867", "metadata": {}, "source": [ "## E. Soal Latihan\n", "1. Apa itu operasi Input/Output (IO) dalam pemrograman, dan mengapa penting untuk hampir semua program?\n", "2. Jelaskan perbedaan antara mode \"r\" (read) dan \"w\" (write) saat membuka berkas. Kapan kita harus menggunakan masing-masing mode ini?\n", "3. Mengapa disarankan untuk menggunakan pernyataan with saat membuka berkas? Apa manfaat utamanya?\n", "4. Anda ingin menambahkan data ke berkas yang sudah ada tanpa menghapus isi lama. Mode pembukaan berkas apa yang harus Anda gunakan?\n", "5. Bagaimana cara membaca berkas per baris dalam Python? Apa yang Anda lakukan dengan karakter newline (\\n) yang terbaca dari setiap baris?\n", "6. Apa perbedaan antara mode \"a\" (append) dan \"w\" (write) saat membuka berkas untuk tujuan penulisan? Kapan Anda akan memilih masing-masing mode ini?\n", "7. Dalam konteks operasi IO, apa yang dimaksud dengan \"binary mode\" (mode biner)? Mengapa mode ini penting, terutama saat bekerja dengan jenis berkas tertentu?\n", "8. Jelaskan apa yang dimaksud dengan serialisasi dalam konteks berkas. Mengapa serialisasi diperlukan ketika menyimpan data ke berkas?\n", "9. Bagaimana Anda menangani kesalahan yang mungkin terjadi saat membuka atau menulis berkas? Berikan contoh kode yang menunjukkan penggunaan pernyataan try dan except untuk mengatasi kesalahan IO.\n", "10. Anda ingin membaca data dari berkas JSON ke dalam program Python. Apa modul yang biasa digunakan dan bagaimana cara melakukannya? Berikan contoh singkat." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 5 }