Fail

Fail ialah set data dalam memori luaran yang mempunyai nama. 

Terdapat dua jenis fail dalam Python:
- teks, yang mengandungi teks yang dipecahkan pada baris; Daripada aksara khas dalam fail teks, hanya terdapat aksara baris baharu ("\n") dan kembali ke permulaan baris ("\r" ;);
- perduaan, yang menyimpan sebarang data perduaan tanpa sekatan (contohnya, gambar, bunyi, video, dsb.).

Seterusnya, kami akan mempertimbangkan untuk bekerja dengan fail teks.

 

Prinsip bekerja dengan fail daripada program
Terdiri daripada tiga peringkat:
1. membuka fail;
2. bekerja dengan fail;
3. menutup fail.
Prinsip operasi ini dipanggil "prinsip sandwic"..

Apabila membuka fail, mod operasi ditunjukkan: membaca, menulis atau menambahkan data ke penghujung fail. Fail yang dibuka disekat dan program lain tidak boleh mengaksesnya. Selepas bekerja dengan fail, anda mesti menutupnya untuk memutuskan sambungan dengan program. Apabila fail ditutup, semua perubahan yang dibuat oleh atur cara dalam fail ini ditulis pada cakera. Python berfungsi dengan fail melalui pembolehubah fail.

Fungsi open() membenarkan membuka fail dan mengembalikan pembolehubah fail yang boleh digunakan untuk mengakses fail.
f = buka(nama_fail, mod_akses)
di mana:
- nama_fail - nama fail yang akan dibuka
- mod_akses - mod membuka fail. Ia boleh menjadi: baca, tulis, dsb. Mod lalai dibaca (r) melainkan dinyatakan sebaliknya. 
 
Senarai penuh mod pembukaan fail

 
Kaedah close() membolehkan anda menutup fail.

Contoh
Fin = buka("input.txt") Fout = terbuka("output.txt")    # lakukan sesuatu dengan fail fout.close() Fin.close() Jika fail sedia ada dibuka untuk ditulis, kandungannya dimusnahkan. Selepas tamat program, semua fail yang terbuka ditutup secara automatik.
 

Mod Penerangan
r Baca sahaja.
w Boleh ditulis sahaja. Akan mencipta fail baharu jika tidak ditemui dengan nama yang dinyatakan.
rb Baca sahaja (perduaan).
wb Tulis sahaja (perduaan). Akan mencipta fail baharu jika tidak ditemui dengan nama yang dinyatakan.
r+ Untuk membaca dan menulis.
rb+ Untuk membaca dan menulis (perduaan).
w+ Untuk membaca dan menulis. Akan mencipta fail boleh tulis baharu jika tidak ditemui dengan nama yang ditentukan.
wb+ Untuk membaca dan menulis (perduaan). Akan mencipta fail boleh tulis baharu jika tidak ditemui dengan nama yang ditentukan.
a Dibuka untuk menambah kandungan baharu. Akan mencipta fail boleh tulis baharu jika tidak ditemui dengan nama yang ditentukan.
a+ Dibuka untuk menambah kandungan baharu. Akan mencipta fail baharu untuk membaca entri jika tidak dijumpai dengan nama yang dinyatakan.
ab Dibuka untuk menambah kandungan baharu (perduaan). Akan mencipta fail boleh tulis baharu jika tidak ditemui dengan nama yang ditentukan.
ab+ Dibuka untuk menambah kandungan baharu (perduaan). Akan mencipta fail baharu untuk membaca entri jika tidak dijumpai dengan nama yang dinyatakan.

Membaca data daripada fail

Apabila membaca fail teks, aliran bait memasuki input program secara berurutan satu demi satu, jadi fail menyediakan akses berurutan kepada data. Iaitu, jika kita perlu membaca nilai ke-10 daripada fail, kita mesti membaca 9 sebelumnya.

Membaca satu baris fail membolehkan kaedah readline() dilaksanakan. Kaedah ini dipanggil pada pembolehubah fail. Fin = buka("input.txt") s = Fin.readline()
Pelbagai kaedah boleh digunakan pada rentetan baca, sama seperti yang digunakan semasa membaca dari papan kekunci (split(), map(), dsb.). Sebagai contoh, jika terdapat dua nombor yang dipisahkan oleh ruang dalam baris fail, maka anda boleh mengiranya seperti berikut: Fin = buka("input.txt") s = Fin.readline().split() # split line pada ruang s = ["2007", "2021"] a, b = peta(int, s)         # gunakan kaedah int() pada semua elemen senarai s,   # iaitu, tukar rentetan aksara kepada nombor # a, b = int(s[0], s[1])   # ini sama seperti baris di atas # a, b = [int(x) untuk x dalam s] # sama seperti penjana
Kaedah read() membaca keseluruhan kandungan fail dan mengembalikan rentetan yang mungkin mengandungi aksara '\n'. Jika parameter integer dihantar ke kaedah read(), tidak lebih daripada bilangan aksara yang ditentukan akan dibaca. Contohnya, anda boleh membaca bait demi bait fail menggunakan kaedah read(1).
.
Apabila fail dibuka, penunjuk yang menentukan lokasi semasa dalam fail ditetapkan pada permulaan fail dan, apabila dibaca, dialihkan ke kedudukan berikutan data dibaca. Semasa menulis, penunjuk dialihkan ke kedudukan bebas seterusnya.

Tulis data ke fail

Kaedah write() digunakan untuk menulis data pada fail. Data berangka mesti ditukar kepada rentetan. Ini boleh dilakukan sama ada dengan kaedah format() atau dengan kaedah str().

 

Fail Berbilang Baris

Apabila bekerja dengan fail berbilang talian, anda perlu tahu apabila data dalam fail kehabisan. Untuk melakukan ini, anda boleh menggunakan ciri kaedah readline(): jika kursor fail menghala ke penghujung fail, maka kaedah readline() mengembalikan rentetan kosong, yang dianggap sebagai nilai boolean palsu: manakala Benar:     s = Fin.readline()     jika tidak s: pecah   # jika rentetan kosong diterima semasa membaca rentetan,   # gelung berakhir dengan pernyataan putus     print(s, end="")  # lumpuhkan baris baharu, kerana apabila membaca baris daripada fail                       # aksara baris baharu "\n" disimpan

 

Cara lain untuk membaca data daripada fail berbilang baris
1. Serta-merta semua data dalam senarai. Fin = buka("input.txt") list_strings = Fin.readlines()    # baca semua baris serentak Fin.close() untuk s dalam list_strings:     cetakan(s, end="")
2. Menggunakan pembinaan with-as. Dalam kes ini, fail ditutup secara automatik selepas tamat kitaran. dengan open("input.txt") sebagai Fin:     untuk s dalam Fin:         cetakan(s, end="") Pembinaan ini memastikan bahawa fail ditutup. 


3. Satu cara untuk mengulangi rentetan dalam gaya bahasa Python (ia adalah disyorkan untuk menggunakan kaedah ini). Dalam kes ini, fail juga ditutup secara automatik. untuk s dalam terbuka("input.txt"):     cetakan(s, end="")

Fail Cyrillic

Jika fail mengandungi huruf Rusia (mana-mana aksara dengan kod lebih besar daripada 127), maka anda mesti menentukan pengekodan semasa membuka data = buka("input.txt", "r", pengekodan="utf-8")