Anda di halaman 1dari 38

Operasi File

PERTEMUAN KESEBELAS
MATA KULIAH DASAR PEMROGRAMAN
PROGRAM STUDI TEKNOLOGI REKAYASA KOMPUTER JARINGAN

Oleh:
Budi Sunaryo, S.T., M.T.
Dosen Program Studi Teknologi Rekayasa Komputer Jaringan
Fakultas Teknologi Industri, Universitas Bung Hatta
www.sunaryo.id
https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
081320777313
Pendahuluan

• Dalam kegiatan pengolahan data, tentunya kita akan memasukkan


data, mengolahnya, dan pastinya akan menyimpan data tersebut.
• Dengan file, data dapat disimpan dengan rapi di komputer, serta bisa
dialih pindahkan (ditransfer).
• Bab ini akan membahas bagaimana melakukan operasi file dasar
(membuat file, membacanya, dan menulisnya). Dikarenakan amat
luasnya dan beragamnya file-file, bagian ini membatasi tipe file yang
akan kita pelajari hanya pada teks saja.
• Kita juga akan mempelajari bagaimana bekerja dengan direktori,
melakukan pencarian dan penelusuran, dan pengarsipan file dan
direktori (dalam bentuk tarball (*.tar) dan zipfile (*.zip)).
2

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

• File secara umum berarti berkas. Pada konteks komputer,


informasi direkam dengan cara tertentu, dikodekan (encode)
sesuai maksud dan tujuan informasi tersebut dibuat dan
disimpan.
• Informasi-informasi tersebut bisa berupa karakter (huruf dan
angka), gambar, suara, video, multimedia, dan lain sebagainya.
• Informasi ini disimpan ke dalam suatu urutan bytes, yang mana
bytes ini terdiri dari angka-angka dari 0 hingga 255.
• Jadi, file adalah urutan dari nilai-nilai itu. Agar bisa bermakna dan
diketahui, maka kita perlu mendekode (decode) file tersebut.
3

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

• Setiap file memiliki format tertentu. Karena kita dalam keseharian


bekerja dengan banyak sekali ragam format file, contoh seperti Word
file (*.doc) untuk file teks, Excel (*.xls) untuk tabel dan spreadsheet,
MP3 (*.mp3) untuk musik, MP4 (*.mp4) untuk video, 3GP (*.3gp)
untuk video ponsel, PDF (*.pdf) untuk menjadikan data teks dan
gambar yang dan masih banyak lagi, maka ada banyak sekali cara
untuk membaca dan menulis file.
• Banyak pula format file terkadang sifatnya tertutup untuk berbagai
alasan (paten, rahasia dagang, atau mungkin rahasia negara) sehingga
tidak bisa diketahui apa dan bagaimana file itu dibuat, ditulis, dan
dibaca kecuali pembuatnya melalui cara-cara tertentu yang hanya
diketahui sedikit orang.
4

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

• Apapun tipe filenya, secara garis besar, file terdiri


atas tiga struktur yang digambarkan pada tabel di
samping. Header
• Header adalah bagian “kepala” file. Biasanya header
memuat metadata (ringkasan terstruktur yang Data
menginformasikan suatu informasi, atau data yang
menjelaskan tentang data) yang biasanya berisi
nama file, tipe data, ukuran, kapan dibuat, kapan EOF
dimodifikasi, kapan diakses terakhir, dan lain-lain.
• Data adalah badan dari file, yang memuat informasi
sebagaimana ditulis oleh pembuat file. End of file
(EOF) adalah tanda tertentu yang menandakan akhir
dari suatu file.
5

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

• Sering kali, kita mendengar tentang file teks dan file biner. File
teks adalah suatu file yang hanya berisi string, tidak memiliki
encoding tertentu, polos (tanpa formatting teks), dan dapat
dibuka di pengolah kata sederhana (Notepad, gedit, vim, dan lain
sebagainya) tanpa perlu penanganan khusus.
• Sementara file biner adalah file yang datanya telah mengalami
encoding sedemikian rupa, sehingga informasi di dalamnya telah
dikode menjadi kumpulan karakter yang tidak kita pahami,
kecuali dibuka dengan penanganan tertentu, cara tertentu, atau
aplikasi tertentu untuk mendekode informasi di dalamnya.
6

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

File dapat dioperasikan. Secara garis besar, macam-macam operasi file


adalah:
1. Membuat file baru
2. Merubah hak akses dan atribut file
3. Membuka file (open)
4. Membaca file (read)
5. Menulis file (write)
6. Menghapus file (remove)
7. Menutup file (close)
8. Memotong file (truncate)
7

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Memahami File

• File dapat diletakkan dalam suatu folder untuk pengarsipan file yang
terorganisir.
• Katalog dari struktur folder yang mengandung referensi ke pada suatu
file atau folder disebut direktori, yang mana sifatnya bisa beragam,
tergantung dari sistem operasi dan sistem file (filesystem) yang dianut
oleh sistem operasi tersebut.
• Rangkaian alamat suatu direktori disebut path. Hubungan antara satu
folder dengan folder di bawahnya seringkali digambarkan sebagai
parent-child relationship, yang mana parent directory membawahi
child directory.
• Direktori tertinggi yang tidak berinduk dan membawahi seluruh
direktori yang ada dikenal sebagai root directory.
8

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Fungsi open() untuk membuat, menulis, dan
membaca file

• Fungsi open() adalah fungsi yang berguna untuk membuka objek file.
Namun, tergantung dari mode yang digunakan dan ketersediaan file
dalam sistem, fungsi ini bisa juga untuk membuat file.
• Bentuk umum dari penggunaan open() adalah:
objek_file = open(nama_file, mode_akses)
• Untuk nama file pada nama_file, apabila anda tidak secara spesifik
menentukan alamat direktori lengkap secraa rinci, maka file akan
dibuat sesuai working directory dimana anda berada sekarang. Untuk
mode akses, ada beberapa mode akses yang diperkenankan.
Standarnya, ada tujuh (7) mode. Selain ketujuh mode, terdapat pula
16 kombinasinya, atau 20 kombinasi, bila kita memisahkan r+ dengan
rt+, w+ dengan wt+, x+ dengan xt+, dan a+ dengan at+ menjadi
tersendiri.
9

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Tabel Mode akses untuk open()

Mode Arti Tujuan


Membaca file. Tanpa kombinasi yang diberikan, maka otomatis file teks yang akan
'r' Read dibuat.

Menulis file. Apabila file yang dituju ada, maka akan di truncate dahulu.
Bila tidak ada filenya, maka file akan dibuat. Tanpa kombinasi yang diberikan, maka
'w' Write otomatis file teks yang akan dibuat.
Standar
Baru ada di Python 3.4. Membuat file. Tanpa kombinasi yang
diberikan, maka otomatis file teks yang akan dibuat. Bila file yang
'x' Exclusive creation dikehendaki untuk dibuat ternyata ada, maka akan muncull error.

'a' Append Menambah file pada bagian ujung akhir dari file asli.
't' Text mode Mode teks.
'b' Binary mode Mode biner.

'+' Update Membuka file dengan tujuan update.


Pada mode ini, data file bisa dibaca dan ditulis.
10

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Tabel Mode akses untuk open()
Mode Arti Tujuan
'rt' Read text file Membaca file teks. Mode ini adalah mode default dari open().
'wt' Write text file Menulis file teks.
'xt' Exclusive creation text Membuat file teks.
file
'at' Append text file Menambah file pada bagian ujung akhir dari file teks.
'rb' Read binary file Membaca file biner.
'wb' Write binary file Menulis file biner.
'xb' Exclusive creation Membuat file biner.
binary file
Kombinasi 'ab' Append binary file Menambah file pada bagian ujung akhir dari file biner.
Membaca file untuk diupdate.
Sinonim dengan 'rt+'.
'r+' Read text file + Untuk pembukaan file, apabila file yang
dituju ada, maka file dibuka tanpa di-
truncate dahulu.
Menulis file teks untuk diupdate.
Sinonim dengan 'wt+'.
Bila filenya ada, maka akan ditimpa dengan file baru hasil update.
'w+' Write text file + Bila tidak ada, maka file akan dibuat. Untuk pembukaan file, apabila file yang dituju
ada, maka akan di-truncate dahulu. 11

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Tabel Mode akses untuk open()

Mode Arti Tujuan


Membuat file teks yang bisa
'x+' Exclusive text file diupdate.
creation + Sinonim dengan 'xt+'.
Menambah file pada bagian ujung akhir dari file teks untuk diupdate, bila
file yang dituju ada.
'a+' Append text file + Bila file dituju tidak ada, maka file baru akan dibuat. Sinonim dengan
'at+'.
Kombinasi 'rb+' Read binary file + Membaca file biner untuk diupdate. Untuk pembukaan file, apabila file
yang dituju ada, maka file dibuka tanpa di-truncate dahulu.
Menulis file biner untuk diupdate. Untuk pembukaan file, apabila file yang
'wb+' Write binary file + dituju ada, maka akan di-truncate dahulu.
'xb+' Exclusive binary file
creation + Membuat file biner untuk diupdate.
Menambah file pada bagian ujung akhir dari file biner untuk diupdate, bila
'ab+' Append binary file + file yang dituju ada. Bila file dituju tidak ada, maka file baru akan dibuat.
12

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Contoh Membuat File

Tulis kode python seperti di bawah ini, lalu simpan dengan nama
buat_file.py di folder tertentu.
1. #membuat file
2. try:
3. objFile = open("daftar pohon.txt", "x")
4. except BaseException as be:
5. print("Error: ", be)
6. else:
7. print("File berhasil dibuat!")
8. finally:
9. objFile.close()

Jalankan, maka hasilnya yaitu:


File berhasil dibuat!
13

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis File

Tulis kode python seperti di bawah ini, lalu simpan dengan nama tulis_file.py di folder tertentu.
1. #membuka file
2. try:
3. objFile = open("isi daftar pohon.txt", "w")
4. except BaseException as be:
5. print("Error: ", be)
6. else:
7. #menulis file
8. objFile.write("Nama pohon Nama latin\n")
9. objFile.write("Aren Arenga pinnata\n")
10. objFile.write("Bintaro Cerbera manghas\n")
11. objFile.write("Durian Durio zibethinus\n")
12. objFile.write("Flamboyan Delonix regia\n")
13. objFile.write("Kantil Magnolia x alba\n") 14

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis File

14. objFile.write("Kelapa Cocos nucifera\n")


15. objFile.write("Kelapa Sawit Elaeis guineensis\n") File berhasil ditulis!

16. objFile.write("Kelengkeng Dimocarpus longan\n")


17. objFile.write("Kenanga Cananga odorata\n")
18. objFile.write("Mahoni Swietenia mahagoni\n")
19. objFile.write("Manggis Garcinia mangostana\n")
20. objFile.write("Palem Raja Roystonea regia\n")
21. objFile.write("Rambutan Nephelium lappaceum\n")
22. objFile.write("Sukun Artocarpus communis\n")
23. objFile.write("Trembesi Samanea saman\n")
24. #cetak pesan berhasil
25. print("File berhasil ditulis!")
26.finally:
27. objFile.close() 15

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Contoh Membaca File

Kita telah menulis file, lalu kita akan membaca file dan
menampilkannya di layar. Buat file baru dengan nama baca_file.py.
1. #membaca dan menampilkannya ke layar
2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. for i in (objFile):
5. print(i)
6. except BaseException as be:
7. print('Error: ', be)
8. finally:
9. objFile.close()

16

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Contoh Membaca File

Hasil pencetakan tampak renggang dikarenakan print() mencetak baru di antara


baris, untuk menghentikan perilaku print() seperti ini, berikan end='' sebagai
parameter tambahan print.
1. #membaca dan menampilkannya ke layar
2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. for i in (objFile):
5. print(i, end='')
6. except BaseException as be:
7. print('Error: ', be)
8. finally:
9. objFile.close()

17

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Membaca file dengan file.read()

• file.read() adalah metode yang digunakan untuk membaca file.


• Apabila file.read() saja yang dituliskan, tanpa ada argumen
opsional size yang ditentukan atau diabaikan atau bernilai size =
None atau size = -1, maka keseluruhan file akan dibaca.
• Hasil pembacaan sama seperti keseluruhan isi file. Akan tetapi,
hasil pembacaannya tertahan di memori. Sehingga hasil
pembacaannya tidak tampil ke layar, kecuali ditampilkan dengan
sengaja.

18

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Membaca file dengan file.read()

1. #membaca file dengan file.read()


2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. reader = objFile.read() #baca keseluruhan file
5. print(reader) #paksa cetak, atau tidak muncul ke layar
6. except BaseException as be:
7. print('Error: ', be)
8. finally:
9. objFile.close()

19

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Membaca file dengan file.read()

Apabila parameter size ditentukan, maka read akan membaca n karakter


awal dalam file. Contoh kita masukkan jumlah karakter sebanyak 10.
1. #membaca file dengan file.read()
2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. reader = objFile.read(10) #baca keseluruhan file
5. print(reader) #paksa cetak, atau tidak muncul ke layar
6. except BaseException as be:
7. print('Error: ', be)
8. finally:
9. objFile.close()

20

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Membaca file dengan file.readline()

file.readline() adalah metode yang digunakan untuk membaca file secara


baris per baris.
1. #membaca file dan menampilkannya ke layar
2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. line = objFile.readline() #inisiasi file.readline()
5. while line != '': # Tanda EOF adalah string kosong
6. print(line, end='')
7. line = objFile.readline()
8. except BaseException as be:
9. print('Error: ', be)
10.finally:
11. objFile.close()
21

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Membaca file dengan file.readline()

Alternatif lain, anda bisa menggunakan iterasi dengan statement


for daripada while.
1. #membaca dan menampilkannya ke layar dengan for
2. try:
3. objFile = open("isi daftar pohon.txt", "r")
4. line = objFile.readline() #inisiasi file.readline()
5. # Baca dan cetak seluruh file baris per baris
6. for line in (objFile):
7. print(line, end='')
8. except BaseException as be:
9. print('Error: ', be)
10.finally:
11. objFile.close()
22

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis file dengan file.write()

• file.write() adalah metode yang digunakan untuk menulis file


secara baris perbaris. Kita bisa menulis file dengan file.write(),
namun kita harus memahami mode yang tepat, apakah a
(append) atau w (write).
• Kita bisa memasangkan append dengan file.write() apabila
tujuannya untuk menambahkan ke akhir file.
• Kita bisa memasangkan write dengan file.write() apabila
tujuannya untuk menulis file. Isi file lama tidak akan
dipertahankan, dan akan digantikan file baru.
23

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan append

• Buka notepad dan isikan data seperti di bawah ini.


• Simpan file dengan nama pohon taman.txt.
=== Isi File Sebelum Ditambah ===
Nama pohon Nama latin
Bidara Ziziphus mauritiana
Kelor Moringa oleifera
Tebu Saccharum officinarum
Bambu Kuning Bambusa vulgaris

24

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan append
1. #menambah ke file
2. try: #buka file sebelum ditambah
3. objFile = open("pohon taman.txt", "r")
4. bacaAwal = objFile.read() #inisiasi file.read()
5. # Baca dan cetak seluruh file
6. print("=== Isi File Sebelum Ditambah ===")
7. print(bacaAwal)
8. except BaseException as be:
9. print('Error: ', be)
10.finally:
11. objFile.close()

12.try: #buka file untuk ditambah


13. objFile = open("pohon taman.txt", "a+")
25

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan append
14. dataAppend = "\nKemuning Murraya paniculata"
15. objFile.write(dataAppend)
16. objFile.close()
17.except BaseException as be:
18. print('Error: ', be)
19.else: #tampilkan isi file hasil tambahan bila tidak error
20. objFile = open("pohon taman.txt", "r")
21. bacaHasilTambah = objFile.read() #inisiasi file.read()
22. # Baca dan cetak seluruh file
23. print("=== Isi File Sesudah Ditambah ===")
24. print(bacaHasilTambah)
25.finally:
26. objFile.close()

26

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan append

• Sehingga ketika dijalankan, kalimat tambahan akan diisi pada


bagian akhir.

27

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan write
1. #menambah ke file
2. try: #buka file sebelum ditambah
3. objFile = open("pohon taman write.txt", "r")
4. bacaAwal = objFile.read() #inisiasi file.read()
5. # Baca dan cetak seluruh file
6. print("=== Isi File Sebelum Ditulis ===")
7. print(bacaAwal)
8. except BaseException as be:
9. print('Error: ', be)
10.finally:
11. objFile.close()

12.try: #buka file untuk ditambah


13. objFile = open("pohon taman write.txt", "w+")
28

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan write
14. dataWrite = "\nKemuning Murraya paniculata"
15. objFile.write(dataWrite)
16. objFile.close()
17.except BaseException as be:
18. print('Error: ', be)
19.else: #tampilkan isi file hasil tambahan bila tidak error
20. objFile = open("pohon taman write.txt", "r")
21. bacaHasilTambah = objFile.read() #inisiasi file.read()
22. # Baca dan cetak seluruh file
23. print("=== Isi File Sesudah Ditulis ===")
24. print(bacaHasilTambah)
25.finally:
26. objFile.close()

29

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Menulis isi file dengan append

• Sehingga ketika dijalankan, kalimat tambahan akan diisi menimpa


seluruh teks dengan kalimat yang baru.

30

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Mengoperasikan dua file dengan operasi berbeda
(satu baca, satu tulis)

• Terkadang kita membutuhkan suatu proses dimana kita ingin


membaca dan menulis file dalam satu waktu.
• Kita dapat mengoperasikan dua file dengan operasi berbeda (satu
baca, satu tulis). Ini bisa dilakukan, namun dengan bantuan
with... as...Pada contoh ini, kita akan mebaca satu file “pohon
taman.txt” untuk dipindahkan.

31

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Mengoperasikan dua file dengan operasi berbeda
(satu baca, satu tulis)
1. #mengoperasikan 2 file
2. #satu baca, satu tulis
3. fileOri = 'pohon taman.txt'
4. fileTujuan = 'pohon taman 2.txt'
5. with open(fileOri, 'r') as O, open(fileTujuan, 'w') as T:
6. print("File original dibaca...")
7. dataOri = O.readlines()
8. print("File tujuan ditulis bacaan file original...")
9. T.writelines(dataOri)
10. print("Selesai!")

32

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Mengoperasikan dua file dengan operasi berbeda
(satu baca, satu tulis)
• Hasil filenya adalah, kedua file kini memiliki dua data yang sama. Ini bukan
pengkopian, namun file “pohon taman 2.txt” adalah hasil penulisan dari data yang
asalnya dari “pohon taman.txt”

33

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Merekam Data Masukan ke dalam File

• Merekam data masukan ke dalam file bisa dilakukan dengan mengkombinasi inputan dengan
operasi file.
• Contoh berikut adalah suatu program sederhana untuk mengukur kadar Indole-3-acetic acid
(IAA) dalam sampel jaringan tumbuhan. Anggaplah anda mendapat rekaman data seperti ini.
Ulangan Kadar IAA (µg/ml) Kadar IAA • Adapun kadar IAA (µg/ml) dikonversi menjadi
(µg/g) IAA (µg/mg) dengan rumus pengukuran IAA
1 1.5 45 sebagaimana berikut (Nashrulloh, 2018):
2 1.3 39
3 1.0 30
4 1.7 51
5 1.2 36 • Maka berapa kadar IAA dalam sampel jaringan
tumbuhan (µg/g) tersebut?
• Pemecahannya melalui Python dapat dilihat di kode
Sampel : 50 mg = 0.05 g slide selanjutnya.
Volume ekstraksi : 1.5 ml
34

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Merekam Data Masukan ke dalam File
1. #merekam data
2. import traceback as tb
3. import statistics as stat
4. print("==============================")
5. print("===PROGRAM HITUNG KADAR IAA===")
6. print("Masukkan data dalam bentuk µg/g")
7. print("==============================")
8. limitData = int(input("Masukkan jumlah sampel: "))
9. try:
10. #inisiasi semua objek
11. recData = open("recordIAA.txt","w")
12. recList = []
13. #iterasi untuk input data sejumlah sampel
14. for i in range(limitData):
15. sampleData = int(input(
16. "Data ke-" + str(i+1) + ": ")) 35

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Merekam Data Masukan ke dalam File
17. #tulis data ke file
18. recData.write(str(sampleData)+"\n")
19. #record ke list
20. recList.insert(i, sampleData)
21. #cetak pesan bila data terekam
22. print("==============================")
23. print("Data terekam di recordIAA.txt!")
24. print("==============================")
25. #tutup file
26. recData.close()
27. except BaseException as be:
28. be = tb.format_exc()
29. print("Error: ", be)
30. else:
31. #bila tidak ada error
32. #hitung kadar IAA 36

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Merekam Data Masukan ke dalam File
17. rerata = stat.mean(recList)
18. galat = stat.stdev(recList)
19. #cetak hasil
20. hasil = ("{a:.2f} ± {sb:.2f} µg/g".format(a = rerata, b = galat))
21. print("Kadar IAA pada sampel adalah:", hasil)
22. finally:
23. #cleanup
24. #bersihkan list
25. recList = []
26. #tutup file
27. recData.close()

37

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id
Merekam Data Masukan ke dalam File

• Hasil filenya adalah, kedua file kini memiliki dua data yang sama. Ini bukan
pengkopian, namun file “pohon taman 2.txt” adalah hasil penulisan dari data yang
asalnya dari “pohon taman.txt”

38

https://bunghatta.ac.id | budi.sunaryo@bunghatta.ac.id

Anda mungkin juga menyukai