Persistensi Data Python - API File
Python menggunakan built-in input() dan print()berfungsi untuk melakukan operasi input / output standar. Fungsi input () membaca byte dari perangkat aliran input standar, yaitu keyboard.
Itu print()fungsi di sisi lain, mengirimkan data ke perangkat aliran keluaran standar yaitu monitor tampilan. Program Python berinteraksi dengan perangkat IO ini melalui objek aliran standarstdin dan stdout didefinisikan dalam modul sys.
Itu input()fungsi sebenarnya adalah pembungkus di sekitar metode readline () dari objek sys.stdin. Semua penekanan tombol dari aliran input diterima sampai tombol 'Enter' ditekan.
>>> import sys
>>> x=sys.stdin.readline()
Welcome to TutorialsPoint
>>> x
'Welcome to TutorialsPoint\n'
Perhatikan bahwa, readline()fungsi meninggalkan karakter '\ n' di belakangnya. Ada juga metode read () yang membaca data dari aliran input standar hingga diakhiri olehCtrl+D karakter.
>>> x=sys.stdin.read()
Hello
Welcome to TutorialsPoint
>>> x
'Hello\nWelcome to TutorialsPoint\n'
Demikian pula, print() adalah fungsi kenyamanan yang meniru metode write () dari objek stdout.
>>> x='Welcome to TutorialsPoint\n'
>>> sys.stdout.write(x)
Welcome to TutorialsPoint
26
Sama seperti objek aliran standar stdin dan stdout, program Python dapat membaca data dari dan mengirim data ke file disk atau soket jaringan. Mereka juga aliran. Objek apa pun yang memiliki metode read () adalah aliran input. Setiap objek yang memiliki metode write () adalah aliran keluaran. Komunikasi dengan aliran dibuat dengan mendapatkan referensi ke objek aliran dengan fungsi open () bawaan.
buka () fungsi
Fungsi bawaan ini menggunakan argumen berikut -
f=open(name, mode, buffering)
Parameter nama, adalah nama file disk atau string byte, mode adalah string satu karakter opsional untuk menentukan jenis operasi yang akan dilakukan (baca, tulis, tambahkan, dll.) Dan parameter buffering adalah 0, 1 atau -1 yang menunjukkan buffering tidak aktif, aktif atau default sistem.
Mode pembukaan file disebutkan seperti tabel di bawah ini. Mode default adalah 'r'
Sr Tidak | Parameter & Deskripsi |
---|---|
1 | R Terbuka untuk membaca (default) |
2 | W Terbuka untuk menulis, memotong file terlebih dahulu |
3 | X Buat file baru dan buka untuk menulis |
4 | A Terbuka untuk menulis, menambahkan ke akhir file jika ada |
5 | B Mode biner |
6 | T Mode teks (default) |
7 | + Buka file disk untuk memperbarui (membaca dan menulis) |
Untuk menyimpan data ke file itu harus dibuka dengan mode 'w'.
f=open('test.txt','w')
Objek file ini bertindak sebagai aliran keluaran, dan memiliki akses ke metode write (). Metode write () mengirim string ke objek ini, dan disimpan dalam file yang mendasari itu.
string="Hello TutorialsPoint\n"
f.write(string)
Penting untuk menutup aliran, untuk memastikan bahwa setiap data yang tersisa di buffer sepenuhnya ditransfer ke sana.
file.close()
Coba dan buka 'test.txt' menggunakan editor tes apa pun (seperti notepad) untuk mengonfirmasi pembuatan file yang berhasil.
Untuk membaca konten 'test.txt' secara terprogram, itu harus dibuka dalam mode 'r'.
f=open('test.txt','r')
Objek ini berperilaku sebagai aliran input. Python dapat mengambil data dari aliran menggunakanread() metode.
string=f.read()
print (string)
Isi file ditampilkan di konsol Python. Objek File juga mendukungreadline() metode yang mampu membaca string hingga menemukan karakter EOF.
Namun, jika file yang sama dibuka dalam mode 'w' untuk menyimpan teks tambahan di dalamnya, konten sebelumnya akan dihapus. Setiap kali, file dibuka dengan izin tulis, itu diperlakukan seolah-olah itu adalah file baru. Untuk menambahkan data ke file yang ada, gunakan 'a' untuk mode tambahkan.
f=open('test.txt','a')
f.write('Python Tutorials\n')
File sekarang, memiliki string yang lebih awal dan baru ditambahkan. Objek file juga mendukungwritelines() metode untuk menulis setiap string dalam objek daftar ke file.
f=open('test.txt','a')
lines=['Java Tutorials\n', 'DBMS tutorials\n', 'Mobile development tutorials\n']
f.writelines(lines)
f.close()
Contoh
Itu readlines()metode mengembalikan daftar string, masing-masing mewakili sebuah baris dalam file. Dimungkinkan juga untuk membaca file baris demi baris sampai akhir file tercapai.
f=open('test.txt','r')
while True:
line=f.readline()
if line=='' : break
print (line, end='')
f.close()
Keluaran
Hello TutorialsPoint
Python Tutorials
Java Tutorials
DBMS tutorials
Mobile development tutorials
Mode biner
Secara default, operasi baca / tulis pada objek file dilakukan pada data string teks. Jika kita ingin menangani file dari jenis lain seperti media (mp3), executable (exe), gambar (jpg) dll, kita perlu menambahkan awalan 'b' ke mode baca / tulis.
Pernyataan berikut akan mengubah string menjadi byte dan menulis dalam file.
f=open('test.bin', 'wb')
data=b"Hello World"
f.write(data)
f.close()
Konversi string teks menjadi byte juga dimungkinkan menggunakan fungsi encode ().
data="Hello World".encode('utf-8')
Kita perlu menggunakan ‘rb’mode untuk membaca file biner. Nilai yang dikembalikan dari metode read () pertama kali didekodekan sebelum dicetak.
f=open('test.bin', 'rb')
data=f.read()
print (data.decode(encoding='utf-8'))
Untuk menulis data integer dalam file biner, objek integer harus diubah menjadi byte oleh to_bytes() metode.
n=25
n.to_bytes(8,'big')
f=open('test.bin', 'wb')
data=n.to_bytes(8,'big')
f.write(data)
Untuk membaca kembali dari file biner, ubah output dari fungsi read () menjadi integer dengan fungsi from_bytes ().
f=open('test.bin', 'rb')
data=f.read()
n=int.from_bytes(data, 'big')
print (n)
Untuk data floating point, kita perlu menggunakan struct modul dari pustaka standar Python.
import struct
x=23.50
data=struct.pack('f',x)
f=open('test.bin', 'wb')
f.write(data)
Membongkar string dari fungsi read (), untuk mengambil data float dari file biner.
f=open('test.bin', 'rb')
data=f.read()
x=struct.unpack('f', data)
print (x)
Baca / tulis secara bersamaan
Ketika sebuah file dibuka untuk ditulis (dengan 'w' atau 'a'), itu tidak mungkin, untuk membaca darinya dan sebaliknya. Melakukannya akan memunculkan error UnSupportedOperation. Kami perlu menutup file sebelum melakukan operasi lain.
Untuk melakukan kedua operasi secara bersamaan, kita harus menambahkan karakter '+' di parameter mode. Karenanya, mode 'w +' atau 'r +' memungkinkan penggunaan metode write () serta read () tanpa menutup file. Objek File juga mendukung fungsi seek () untuk memundurkan aliran ke posisi byte yang diinginkan.
f=open('test.txt','w+')
f.write('Hello world')
f.seek(0,0)
data=f.read()
print (data)
f.close()
Tabel berikut merangkum semua metode yang tersedia untuk file seperti objek.
Sr Tidak | Metode & Deskripsi |
---|---|
1 | close() Tutup file. File tertutup tidak dapat dibaca atau ditulis lagi. |
2 | flush() Siram buffer internal. |
3 | fileno() Mengembalikan deskriptor file integer. |
4 | next() Mengembalikan baris berikutnya dari file setiap kali dipanggil. Gunakan iterator next () di Python 3. |
5 | read([size]) Membaca paling banyak byte ukuran dari file (lebih sedikit jika pembacaan mencapai EOF sebelum mendapatkan byte ukuran). |
6 | readline([size]) Membaca satu baris penuh dari file. Karakter baris baru yang tertinggal disimpan dalam string. |
7 | readlines([sizehint]) Membaca sampai EOF menggunakan readline () dan mengembalikan daftar yang berisi baris. |
8 | seek(offset[, whence]) Mengatur posisi file saat ini. 0-mulai 1-saat ini 2-akhir. |
9 | seek(offset[, whence]) Mengatur posisi file saat ini. 0-mulai 1-saat ini 2-akhir. |
10 | tell() Mengembalikan posisi file saat ini |
11 | truncate([size]) Memotong ukuran file. |
12 | write(str) Menulis string ke file. Tidak ada nilai kembali. |