Python mensupport string dan binary, tetapi pada Python 3.x ada perbedaan diantara keduanya, yaitu:
- Text file mewakili normal string termasuk unicode encoding dan decoding secara otamatis.
- Binary file mewakili bytes string dan mengijinkan program untuk mengakses file tanpa peringatan.
Kebanyakan programer hanya bekerja dengan ASCII, dan menggunakan file text dasar sebagai string normal. Tetapi semua string secara teknik merupakan Unicode pada Python 3.x dan Python2.x. Sehingga pengguna ASCII tidak menyadarinya.
Bila kita menggunakan bahasa internasional atau data berorientasi byte, secara garis besar kita harus menggunakan dua buah file, satu untuk string dan yang lain untuk byte.
open(namafile, mode).
namafile adalah alamat file+nama file.
mode adalah cara membuka file tersebut dengan 'r' (read) yang merupakan default hanya membaca file saja, 'w' untuk membuat, dan membuka file. Kedua-duanya harus berupa string.
Ketika kita membuat sebuah objek file dengan 'open', kita bisa memanggil metode read atau write dengan file external yang terkait. Dalam semua kasus, text file dibuat dengan string pada python, isi file masuk pada python berupa string, dan kemudian ditulis dengan metode write sebagai string.
Metode membaca (reading) dan menulis (writing) bisa dilakukan dengan bermacam cara.
- >>> testFile=open('testFilePython.txt','w') # Membuat file 'testFilePython'
- >>> testFile.write('hello file\n') # Menulikan satu baris kedalamnya
- 11
- >>> testFile.close() # Menutup file dan menuliskan ke file
- >>>
Sekarang kita periksa file yang kita buat, biasanya file yang kita buat tersebut berada di folder pyhon dalam drive c, yang bernama PythonXX (C:\Python34\testFilePython.txt). Lalu kita buka file tersebut dengan notepad.
Bila kita ingin membaca file yang baru kita buat, kita harus membuka lagi filenya, karena kita telah menutup file dengan perintah 'close()' seperti pada baris no.4.
- >>> testFile=open('testFilePython.txt') # membuka file dengan mode read
- >>> testFile.readline() # membaca baris
- 'hello file\n'
- >>> testFile.close()
- >>>
Untuk membuat baris kedua pada file. File 'testFile' harus dibuka kembali dengan mode 'w' (write). Dan bila kita membuka file dengan open mode 'w', file kita akan dibuat baru, tanpa data, dengan kata lain file lama dihapus oleh python.
Tidak perlu dilakukan perintah dibawah ini.
- >>> testFile=open('testFilePython.txt','w') # membuat file baru dan kosong.
- >>>
Bila kita buka file 'testFilePython.txt' kita akan mendapati sebuah file kosong.
Jadi sebelum kita membuat file baru, kita harus menyimpan data awal dahulu.
- >>> testFile=open('testFilePyhon.txt') # membaca file
- >>> a=testFile.readline() # membuat string yang berisi isi dari file
- >>> a
- 'hello file\n'
- >>> testFile.close()
- >>> testFile=open('testFilePython.txt','w') # membuat file baru
- >>> testFile.write(a+'baris kedua\n') # mengisi baris lama + baris baru
- 23
- >>> testFile.close()
- >>> testFile=open('testFilePython.txt')
- >>> testFile.readline() # print baris 1
- 'hello file\n'
- >>> testFile.readline() # print baris berikutnya
- 'baris kedua\n'
- >>> testFile.readline() # print baris berikutnya
- ''
- >>> testFile.close() # menutup file
- >>> testFile=open('testFilePython.txt')
- >>> testFile.readlines() # membaca seluruh baris
- ['hello file\n', 'baris kedua\n']
- >>> open('c:/Python34/testFilePyhon.txt').readlines() # pc window
- ['hello file\n', 'baris kedua\n']
- >>>
Cara ini adalah bukan yang terbaik untuk membaca dan menuliskan text kedalam sebuah file, karena :
- cara ini menampilkan semua format mentah yang ada pada file, contohnya baris baru tidak berada pada baris baru, tetapi dipisahkan dengan '\n' yang berarti baris baru.
- Juga semua output dari perintah read adalah string bukan objek, sehingga bila data kita adalah integer atau yang lain, kita harus mengkonversikannya terlebih dahulu.
- Semua text yang kita buat tidak langsung dituliskan kedalam disk, melainkan dibuffer terlebih dahulu dengan close(), flush().
- close() adalah fungsi untuk memutuskan hubungan dengan external file, tetapi masih ada didalam memory.
No comments:
Post a Comment