Konsep Berkas
Berkas dalam sebuah komputer digunakan untuk menyimpan data, program aplikasi atau paket
program. Berkas data pada umumnya dibagi menjadi dua macam yaitu:
Untuk mengakses data pada berkas biner, harus diketahui format atau tata cara
penyimpanan datanya.Sebagian berkas biner sudah mengalami pengolahan sebelum
disimpan sehingga diperlukan algoritma tertentu untuk mengakses data yang tersimpan.
Pada prinsipnya terdapat dua aktivitas dasar dalam mengakses berkas, yaitu menulis
data (write) ke dalam berkas dan membaca data (read) dari berkas. Pengolahan data pada
berkas terdiri atas tiga langkah dasar yaitu:
2. Menyimpan data ke berkas atau membaca data dari berkas, dengan perintah terkait dengan
read dan write
Untuk membuka sebuah berkas, perintah bisa diberikan agar Python berkomunikasi dengan
sistem operasi komputer dan meminta berkasnya. Dalam contoh berikut, file tulis.txt berada
di folder yang sama dengan program Python tersebut.
Pada kode di atas, sistem operasi kemudian mencari file yang dimaksud menurut alamat file
yang telah diberikan, yaitu tulis.txt . Kemudian kita masukkan ke dalam file handle berkas .
File handle adalah nama atau pengenal berkas sementara yang ditetapkan kepada berkas yang
terbuka, yang saat ini sedang digunakan oleh sistem operasi.
Setiap akses terhadap berkas teks dimulai dengan membuka berkas dengan instruksi open() ,
Instruksi open() menerima dua parameter. Parameter pertama adalah nama direktorinya dari
berkas, dan parameter kedua adalah mode akses. Mode akses berkas teks ada tiga macam,
yaitu:
Perlu anda perhatikan, jika berkas yang diminta tidak ada, maka akan terjadi error berikut.
Terdapat lima instruksi / method dasar dalam mengolah berkas teks sebagaimana tercantum
pada tabel berikut.
Instruksi Penggunaan
write() Menulis satu kalimat. Parameter berupa satu string.
writelines() Menulis satu atau banyak kalimat. Parameter berupa deretan string atau list.
read() Membaca karakter/huruf dari berkas. Jika diberi parameter angka, parameter menunjukkan jum
karakter yang dibaca. Tanpa parameter, yang dibaca adalah seluruh karakter di dalam berkas.
Perhatikan bahwa simbol ganti baris atau newline ('\n') dihitung sebagai karakter.
readline() Membaca satu baris teks. Jika diberi parameter angka, parameter menunjukkan jumlah maksim
dibaca.
readlines() Membaca banyak baris teks sekaligus dan data kembaliannya berupa list. Jika diberi paramete
menunjukkan jumlah maksimal karakter yang dibaca.
File handle tidak berisi data file. Jika kita menjalankan print(berkas) , program akan
mencetak <open file 'tulis.txt', mode 'r' at 0x7f20c47dd540> atau variasinya
sebagai output.
Untuk membaca isi dari berkas tersebut, kita perlu membuat file handle dengan mode
akses "r" pada saat membuka berkas dengan perintah open() . Kemudian, kita berikan
instruksi / method read() , readline() , atau readlines() pada file handle yang telah dibuat.
Selain itu, kita juga bisa menerapkan iterasi for untuk membaca berkas baris demi baris.
Output:
--Seluruh teks--
"Untuk amannya, antisipasi ke depan kami mencari seribu relawan lagi," ucapnya dalam
Talkshow 'Kolaborasi Sebagai Strategi Lawan Covid-19' yang digelar di Media Center Satgas
Covid-19 di Graha BNPB Jakarta pada Jumat (11/12).
--150 karakter--
Pada contoh diatas, method read() membaca seluruh isi pada berkas. Nah, ketika kita ingin
membaca 150 karakter pertama dari berkas, kita dapat menambahkan maksimal karakter (150)
pada method read() .
Kemudian, kita juga bisa membaca baris pertama dari suatu berkas dengan readline() .
Perhatikan contoh berikut:
Output:
Pada contoh diatas, method readline() membaca baris pertama pada berkas
teks "kabar.txt" . Jadi yang ditampilkan hanya baris pertama saja, seluruh karakter sebelum
baris baru / newline ('\n') .
Nah sekarang bagaimana jika kita ingin menghitung jumlah baris pada suatu berkas teks?
Caranya kita bisa kombinasikan readlines() dan iterasi for. Method readlines() membaca
seluruh baris teks sekaligus dan mengembalikannya dalam bentuk list.
Pada contoh berikut jika program dijalankan, maka outputnya adalah 4, yang berarti
berkas "kabar.txt" terdiri dari 4 baris.
Membuat dan menulis file baru
Untuk membuat sebuah berkas, gunakan open() , tapi kali ini dengan dengan 'w' sebagai
parameter kedua. Jika berkas tersebut belum ada, maka akan dibuat sebuah berkas baru. Jika
sudah ada, maka berkas yang lama akan dihapus. Sedangkan jika kita menggunakan mode "a"
sebagai parameter kedua, maka
fwrite.write('Baris baru!\n')
Pada kode di atas, program mengakses berkas dokumen.txt, kemudian berkas tersebut masuk
ke dalam mode "w". Kemudian kita menuliskan teks dengan method .write() pada berkas
dokumen.txt. Terakhir, berkas dokumen.txt ditutup. Sehingga, dalam berkas dokumen.txt, kita
mendapatkan data sebagai berikut:
Maka, dalam berkas dokumen.txt, kita mendapatkan data sebagai berikut ini. Data yang
sebelumya telah terhapus.
Data berikut ini tersimpan di berkas. Kalimat berikut ini juga tersimpan di berkas.
Bagaimana cara kita menambahkan data tanpa harus menghapus data yang sudah ada pada
berkas dokumen.txt? Kita bisa gunakan mode "a" terhadap berkas dokumen.txt
Data berikut ini tersimpan di berkas. Kalimat berikut ini juga tersimpan di berkas. File berikut ini
tersimpan di berkas. Naskah berikut ini juga tersimpan di berkas.
Untuk mengakses berkas biner, caranya hampir sama dengan berkas teks. Setiap akses
terhadap berkas biner dimulai dengan membuka berkas dengan instruksi open() ,
Instruksi open() menerima dua parameter. Parameter pertama adalah nama direktorinya dari
berkas, dan parameter kedua adalah mode akses. Mode akses berkas teks ada tiga macam,
yaitu:
1. “wb” : berkas biner diakses untuk menulis data pada berkas tersebut.
Jika nama berkas sudah ada, maka berkas lama akan dihapus. Jika belum ada, maka
program akan membuat sebuah berkas baru.
2. “rb”: berkas biner diakses untuk dibaca.
3. “rb+”: berkas biner bisa diakses untuk menulis data pada berkas tersebut ataupun
membacanya.
Pada kode di atas, sistem operasi kemudian mencari file yang dimaksud menurut alamat file
yang telah diberikan, yaitu myfile.bin . Kemudian kita masukkan ke dalam file handle f
dengan mode wb, yang memungkinkan kita untuk menulis data ke dalam berkas biner.
1. ls_angka_2 = []
2.
3. r = open('/Users/Documents/myfile.bin', 'rb')
4.
5. for ln in r:
6. x = float(ln)
7. ls_angka_2.append(x)
8.
9. print("List angka = ", ls_angka_2)
10.
11. r.close();
Nah sekarang cobalah kerjakan soal berikut ini. Disini kita akan mencoba menuliskan kode
bytes sehingga tersimpan sebuah berkas biner gambar.
Apabila diketahui kode sebagai berikut, isilah titik-titik yang ada pada method write() dengan isi
binary.txt di bawah. Kemudian, periksalah di directory anda. Gambar apa yang dihasilkan?
shelve
shelve adalah modul Python yang memungkinkan terdapat nilai-nilai yang melekat pada
kunci / key dari suatu objek. Pada modul shelve , sebuah key dapat memiliki banyak
nilai / value. Saat kita membuat suatu objek, kita harus menentukan key, bersama dengan nilai-
nilai dari key objek tersebut. Modul shelve menghasilkan berkas biner. Dengan cara ini, berkas
biner dari shelve menjadi database berisi values yang tersimpan.
Akses data dengan cara shelve lebih fleksibel karena proses pembacaan data tidak harus urut
sesuai urutan penulisan data (tidak mengenal indeks). Akses dilakukan dengan cara yang mirip
dengan mengakses data pada sebuah variabel bertipe dictionary. Akses data dilakukan dengan
menyebut key nya.
1. import shelve
2. f = shelve.open("/Users/Documents/rak.data")
3. f["produk"] = ["sepatu", "tas", "dompet"] #menyimpan data
4. f["merk"] = ("Buccheri", "Gucci", "Coach")
5. f["harga"] = [500000, 850000, 350000]
6. f.close() # menutup berkas
7.
8. f = shelve.open("/Users/Documents/rak.data") # membuka berkas
9. print("Produk:", f["produk"]) # membaca data
10. print("Harga:", f["harga"]) # akses data mirip Dictionary
11. print("Merk:", f["merk"]) # tidak harus urut
12.
13. print(f["merk"][2])
14. f.close()
Output
Pada program di atas, baris pertama melakukan import modul shelve . Kemudian baris ke-2
membuka berkas "rak.data" dan kita masukkan ke dalam objek file handle f .
Jika "rak.data" belum ada, maka program akan membuat berkas "rak.data" secara
otomatis. Kemudian pada baris ke-3 sampai baris ke-5, kita tentukan key dari object, bersama
dengan nilai yang melekat pada tiap key. Disini kita mempunyai key-value sebagai berikut:
Key Value
produk 'sepatu', 'tas', 'dompet'
merk 'Buccheri', 'Gucci', 'Coach'
harga 500000, 850000, 350000
Urutan penyimpanan key pada objek adalah “produk”, “merk” dan “harga”, sedangkan data
dibaca dengan urutan yang berbeda, yaitu “produk”, “harga”, dan “merk”. Pada baris ke-6, kita
menutup file "rak.data" .
Kemudian, pada baris ke-8 kita membuka file "rak.data" kembali. Pada baris ke-9, value
yang menempel pada key "produk" dicetak. Pada baris ke-10, value yang menempel pada key
"harga" dicetak. Pada baris ke-11, value yang menempel pada key "merk" dicetak.
Pada baris ke-13, kita mencetak elemen indeks ke-2 dari value yang melekat pada key "merk".
Nilai dari key "merk" adalah ("Buccheri", "Gucci", "Coach") - yang berupa tuple.
Sehingga, data yang ditampilkan adalah "Coach". Pada baris ke-14, kita menutup
file "rak.data" .