Modul 6: File
Capaian Pembelajaran Mata Kuliah
Mampu menggunakan elemen-elemen pemrograman, yaitu fungsi, I/O, dan tipe data buatan sendiri untuk membuat program sederhana berbasis teks.
Materi
Sebuah program, kadang butuh menyimpan data ke dalam file atau membaca dari file. File memungkinkan data tetap tersimpan meskipun program sudah selesai dijalankan. Saat berurusan dengan file, biasanya kita melakukan hal-hal berikut.
- cek keberadaan file,
- membuat/menghapus file,
- membuka/menutup file,
- membaca isi file, dan
- menulis data ke file.
Cek Keberadaan File
Untuk menangani file, kita harus memastikan file tersebut ada.
Misalkan kita ingin cek keberadaan file dengan nama file.txt.
Untuk itu, kita tuliskan kode berikut.
Penjelasan:
import osartinya kita memanggil modulos(operating system).-
os.path.exists("file.txt")memeriksa apakah file dengan nama tersebut ada di direktori saat ini. Di sini kita menggunakan fungsiexistsyang disediakan modulos.Catatan
osadalah nama modul,pathadalah nama submodul, danexistsadalah nama fungsi yang ada di dalam submodulpath.
Membuat File
Ada beberapa cara membuat file di Python.
Menggunakan mode create (x)
Catatan
block try dan except digunakan untuk menghindari program berhenti (crash)
karena error yang diakibatkan file sudah ada saat kita memerintahkan
pembuatan file menggunakan mode x.
Catatan
Setelah selesai menggunakan file (open, write, atau read), tutuplah file
tersebut dengan memanggil fungsi close agar file tidak korup jika program
tiba-tiba berhenti. Selain itu, menutup file berarti mengosongkan memori
agar dapat digunakan untuk yang lain.
Menggunakan mode write (w)
Sebagai rangkuman, tabel berikut menunjukkan mode dalam pembuatan file dan efeknya.
| Mode | Arti | File Exist? | Output |
|---|---|---|---|
x |
create | Ya | Error (tangani dengan blok try-except ) |
x |
create | Tidak | File dibuat |
w |
write | Ya | File dibuka untuk ditulis |
w |
write | Tidak | File dibuat |
Menghapus File
Untuk menghapus sebuah file, perhatikan kode berikut.
Membuka File
Untuk membuka file, gunakan fungsi open sesuai
dengan tujuan dibukanya file tersebut.
Jika tujuannya untuk
- dibaca, gunakan
open(namafile, 'r') - ditulis, gunakan
open(namafile, 'w') - ditambah, gunakan
open(namafile, 'a') - dibuat baru jika tidak ada, gunakan
open(namafile, 'x')
Membaca File
Misalkan kita memiliki file teks dengan nama file.txt.
Isinya adalah sebagai berikut.
Menulis File
Masih dengan file.txt yang sama.
Coba
-
Misalkan kita punya file dengan nama
file.txt.Kita lalu menuliskan nama baru ke dalam file menggunakan mode
wseperti berikut.Apa yang terjadi?
-
Saat membaca suatu file dengan perintah
isi = f.read(), semua isinya dibaca dan disimpan ke variabelisi. Selain fungsireadada juga fungsireadline. Sesuai namanya,readlinehanya membaca satu baris dari isi di dalam file.Apa outputnya?
Kode tersebut hanya akan membaca satu baris teratas dari
file.txt. Bagaimana jika kita ingin membaca semua baris dalam file tersebut? Untuk itu, gunakan perulangan.Seperti apa outputnya? Apakah ada yang aneh?
Catatan
Dalam
file.txt, ketika kita membaca barisbudi, terdapat invisible character dalam baris itu, yaitu\n. Jadi, setelah statementbaris = f.readline(), isi daribarisadalah string"budi\n".Selain
readline()ada juga fungsireadlines(). Coba dan jelaskan beda antara keduanya. -
Perhatikan kode berikut.
Apa fungsi
strip()? -
Pembukaan dan pembacaan file dalam program Python, biasanya dibungkus dalam blok
with. Blok ini digunakan sebagai isolasi agar setelah blok ini selesai, file langsung ditutup. Sebagai contoh:Buatlah kode yang sama dengan tujuan menambahkan baris baru ke dalam file.
-
Berikut adalah
file.txt.Tuliskan kode untuk menambah 2 nama di bawah ina, yaitu hamid dan santi sehingga file tersebut menjadi seperti berikut.
JSON
Menuliskan sesuatu ke dalam file dalam baris-baris seperti file.txt sangat mudah.
Sayangnya, saat kita baca ulang atau edit, tidak terlalu mudah.
Tentu repot menukar urutan hamid dan wati, misalnya.
Selain itu, lebih repot lagi jika data yang kita ingin simpan berbentuk data gabungan.
Misalnya, biodata (nama, umur, hobi, alamat).
Menyimpannya dalam bentuk teks polos sepertinya tidak terlalu bagus.
Untuk itu, kita akan menggunakan format JSON (Javascript Object Notation) dalam menyimpan data ke file teks. Contoh JSON adalah sebagai berikut.
Nanti kita akan belajar bahwa di Python, terdapat juga data yang diformat seperti JSON, yaitu dictionary.
Untuk menggunakan JSON di Python, kita dapat menggunakan modul json.
Misalnya kita memiliki file teks dengan nama data.json.
Perhatikan kode berikut untuk melihat cara membaca file JSON tersebut.
Output dari program tersebut adalah sebagai berikut.
Bagaimana jika kita ingin mengubah data dalam file tersebut? Misalnya kita ingin mengubah umur menjadi 31. Berikut caranya.
Untuk menambah data di data.json,
perhatikan kode berikut.
data.json sekarang menjadi berisi seperti berikut.
| data.json | |
|---|---|
Coba
Berikut adalah contoh program manajemen kontak menggunakan JSON. Tulis dan jalankan kode ini dan bereksprerimenlah dengan mengubah-ubahnya.
import json
import os
KONTAK_FILE = "kontak.json"
def load_kontak():
"""Memuat data kontak dari file JSON"""
if os.path.exists(KONTAK_FILE):
with open(KONTAK_FILE, 'r') as file:
return json.load(file)
return [] # Return empty list jika file belum ada
def save_kontak(kontak_list):
"""Menyimpan data kontak ke file JSON"""
with open(KONTAK_FILE, 'w') as file:
json.dump(kontak_list, file, indent=4)
def tambah_kontak():
"""Menambah kontak baru"""
kontak = load_kontak()
nama = input("Nama: ")
telepon = input("Nomor telepon: ")
email = input("Email: ")
kontak_baru = {
"id": len(kontak) + 1,
"nama": nama,
"telepon": telepon,
"email": email
}
kontak.append(kontak_baru)
save_kontak(kontak)
print(f"Kontak {nama} berhasil ditambahkan!")
def lihat_kontak():
"""Menampilkan semua kontak"""
kontak = load_kontak()
if not kontak:
print("Belum ada kontak.")
return
print("\n=== DAFTAR KONTAK ===")
for k in kontak:
print(k['id'], ".", k['nama'])
print("Telepon:", k['telepon'])
print("Email:", k['email'])
print()
def cari_kontak():
"""Mencari kontak berdasarkan nama"""
kontak = load_kontak()
keyword = input("Masukkan nama yang dicari: ").lower()
hasil = [k for k in kontak if keyword in k['nama'].lower()]
if hasil:
print("\nDitemukan", len(hasil), "kontak:")
for k in hasil:
print("-", k['nama'], "(" + str(k['telepon']) + ")")
else:
print("Tidak ada kontak dengan nama", keyword)
def main():
while True:
print("\n=== MANAJEMEN KONTAK ===")
print("1. Tambah kontak")
print("2. Lihat semua kontak")
print("3. Cari kontak")
print("4. Keluar")
pilihan = input("Pilih menu (1-4): ")
if pilihan == '1':
tambah_kontak()
elif pilihan == '2':
lihat_kontak()
elif pilihan == '3':
cari_kontak()
elif pilihan == '4':
print("Terima kasih!")
break
else:
print("Pilihan tidak valid!")
if __name__ == "__main__":
main()
Tugas Praktikum
Buatlah program untuk Sistem Manajemen Perpustakaan Digital. Tiru logika kode dari program manajemen kontak sebelumnya.
-
Manajemen Buku
- Tambah, edit, hapus buku
- Data buku: ID, Judul, Pengarang, Penerbit, Tahun, Stok, Kategori
- Simpan dalam format JSON (
buku.json)
-
Manajemen Anggota
- Tambah, edit, hapus anggota
- Data anggota: ID Anggota, Nama, Alamat, Telepon
- Simpan dalam format JSON (
anggota.json)
Contoh struktur JSON untuk buku.