Cara Melaksanakan Operasi Input/Output Python pada Fail dengan Fungsi Terbuka Python
- 1378
- 30
- Clarence Tromp
Manipulasi fail adalah operasi yang lambat laun kita perlu melaksanakan dalam program kami. Python terbina dalam buka
fungsi mengembalikan a objek fail
, yang membolehkan kita berinteraksi dengan fail dalam mod yang berbeza: kita akan melihatnya dalam artikel ini.
Dalam tutorial Python ini, anda akan belajar:
- Cara menggunakan fungsi terbuka python.
- Apakah pelbagai mod operasi yang boleh digunakan dengan fungsi terbuka Python.
- Cara berinteraksi dengan objek fail.
- Mengapa penting untuk menutup objek fail, dan bagaimana melakukannya.
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | OS-bebas |
Perisian | python3 |
Yang lain | Tidak ada kebenaran khas yang diperlukan. |
Konvensyen | # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak >>> - Perintah Python akan dilaksanakan dalam cangkang interaktif |
Penyataan input dan output python
Terdapat banyak sebab program perlu berinteraksi dengan fail: membaca konfigurasi dan tetapan yang akan mempengaruhi tingkah laku program itu sendiri, atau mungkin data yang berterusan. Dalam tutorial ini, kita akan melihat bagaimana untuk menyelesaikan tugas -tugas tersebut, menggunakan fungsi terbuka Python dan berinteraksi dengan objek fail
.
Fungsi terbuka python
Sebelum mula membaca atau menulis fail, kita perlu belajar bagaimana kita dapat mengaksesnya. Fungsi terbuka Python membuka fail dan mengembalikan a objek fail
, Meningkatkan Oserror
pengecualian jika sumber tidak dapat diakses. Fungsi ini hanya mempunyai satu hujah wajib, fail
, yang merupakan rentetan atau objek byte yang mewakili laluan fail yang akan dibuka:
>>> fobject = buka ('linuxconfig.txt ')
Salinan Mod Baca - 'R'
Kami membuka Linuxconfig.txt
fail, dan objek fail yang dihasilkan kini dirujuk oleh fobject
. Ia adalah python objek fail
yang melaksanakan kaedah seperti tulis
dan Baca
. Bagaimana jika Linuxconfig.txt
Fail tidak wujud? A FileNotFoundError
Pengecualian akan dibangkitkan:
>>> fobject = buka ('linuxconfig.txt ') Traceback (panggilan terakhir terakhir): fail "", baris 1, dalam FilenotfoundError: [errno 2] Tiada fail atau direktori sedemikian: 'linuxconfig.txt '
Salinan Seperti yang kita katakan di atas, satu -satunya hujah wajib mengenai fungsi terbuka Python adalah fail
. Apabila digunakan seperti dalam contoh di atas, fungsi beroperasi mod teks
dan fail dibuka hanya untuk membaca. Bersamaan dengan apa yang kita lakukan di atas adalah:
>>> fobject = buka ('linuxconfig.txt ',' rt ')
Salinan Hujah kedua fungsi adalah mod
. Dalam kes ini, 'rt'
, Dimanakah 'r'
bermaksud Baca
dan juga 'T'
Menentukan bahawa kami beroperasi dalam mod teks. Ia juga mungkin untuk membuka fail dalam mod binari, menggantikannya 'T'
dengan 'b'
: dalam hal ini kandungan bait, tanpa pengekodan akan dikembalikan. Sejak 'T'
adalah mod lalai, mulai sekarang, kita akan menghilangkannya. Untuk membaca kandungan fail yang boleh kita gunakan, sebagai contoh, Baca
kaedah. Ia akan mengembalikan semua kandungan fail sebagai rentetan:
>>> fobject.baca () 'linuxconfig sangat mengagumkan!\ n '
Salinan Bilakah beroperasi dalam mod baca, sebarang percubaan menulis ke fail akan menaikkan io.Tidak disokong
Pengecualian:
>>> fobject.tulis ('linuxconfig sangat mengagumkan!') Traceback (panggilan terakhir terakhir): fail "", baris 1, dalam io.Tidak disokong: tidak boleh ditulis
Salinan Jelas, ini bukan satu -satunya mod yang tersedia. Mari kita lihat yang lain.
Mod Tulis - 'W'
Semasa menentukan 'W'
sebagai nilai mod
hujah buka
fungsi, jika fail itu wujud, ia adalah yang pertama dipotong
(keseluruhan kandungannya dibuang) dan kemudian dibuka untuk menulis; Sekiranya fail tidak wujud, ia dibuat. Dalam kes ini kita menggunakan tulis
kaedah objek fail:
>>> fobject = buka ('linuxconfig.txt ',' w ') >>> fobject.tulis ('kami hanya menulis ke fail!') 26 >>> fobject.Tutup ()
Salinan Kami membuka fail untuk menulis, daripada kami menggunakan tulis
kaedah objek fail, yang menulis rentetan dan mengembalikan bilangan aksara yang ditulis, 26 dalam kes ini, akhirnya kami menggunakan Tutup
Kaedah Untuk Menutup Objek: Langkah ini sangat penting, kerana operasi menulis menjadi berkesan hanya sekali kandungan fail yang dibuang (kita akan melihat kepentingan menutup objek fail pada akhir tutorial). Jika kita kini mengkaji kandungan fail, kita melihat bahawa kandungannya sebelumnya telah ditimpa, dan ia hanya mengandungi rentetan:
"Kami hanya menulis ke fail!'
Seperti yang berlaku di atas, jika kita cuba melakukan operasi yang tidak dibenarkan oleh mod operasi, pengecualian dibangkitkan. Dalam kes ini, jika kita cuba membaca kandungan fail, kami memperoleh hasil berikut:
>>> fobject = buka ('linuxconfig.txt ',' w ') >>> fobject.Baca () Traceback (panggilan terakhir yang terakhir): Fail "", baris 1, dalam io.Tidak disokong: tidak boleh dibaca
Salinan Menambah ke fail: Mod 'A'
Bagaimana jika kita mahu menambah fail, menyimpan kandungannya sekarang? Kita mesti menggunakan 'a'
(tambah) mod. Apabila mod ini digunakan, jika ada fail, ia dibuka untuk menulis dan alirannya diposisikan di hujungnya. Dengan cara ini kandungan fail sebelumnya, akan dipelihara. Jika fail tidak wujud, ia dibuat:
>>> fobject = buka ('linuxconfig.txt ',' a ') >>> fobject.tulis ('Teks yang dilampirkan!') 14 >>> fobject.Tutup ()
Salinan Kami membuka fail di 'a'
mod, dan tulis rentetan 'Teks yang dilampirkan' ke fail. Kandungan sebelumnya belum dipotong:
Linuxconfig hebat! Teks yang dilampirkan!
Mod 'X' - Penciptaan Eksklusif
Mod pembukaan ini hanya tersedia di python3. Apabila ia digunakan, a FileExistsError
ia dibangkitkan jika fail sudah ada. Jika fail tidak wujud, ia dibuat dan dibuka untuk menulis:
fileObject = buka ('linuxconfig.TXT ',' X ') Traceback (panggilan terakhir terakhir): fail "", baris 1, dalam FileExistsError: [errno 17] Fail wujud: 'Linuxconfig.txt '
Salinan Setiap kali kita menulis sesuatu, ia dilampirkan kepada kandungan sebelumnya, sehingga kita menutup objek fail:
>>> fileObject = buka ('linuxconfig1.txt ',' x ') >>> FileObject.tulis ('linuxconfig adalah hebat lagi \ n') >>> fileObject.tulis ('saya ulangi: linuxconfig hebat!\ n ') >>> FileObject.Tutup ()
Salinan Setelah menjalankan kod di atas, kandungan fail baru akan:
Linuxconfig hebat! Saya ulangi: linuxconfig sangat mengagumkan!
Watak '+'
Kami melihat mod asas yang boleh digunakan dengan buka
berfungsi dan bagaimana mereka berfungsi. Dengan memasuki '+'
watak kepada masing -masing, kita boleh mendapatkan tingkah laku baru.
Mod 'r+'
Apabila memasuki watak '+' ke mod 'R' ('R+'), fail dibuka untuk membaca dan menulis; pengecualian dibangkitkan jika fail tidak wujud. Aliran itu diposisikan pada permulaan fail, jadi jika sesuatu ditulis, ia akan mengatasi kandungan sebelumnya. Sekiranya kita berada dalam mod ini, tetapi kita masih mahu kandungan baru dilampirkan, menempah yang ada, kita mesti mengubah kedudukan semasa menggunakan mencari
Kaedah objek fail sebelum menulis, dengan cara berikut:
>>> fileObject = buka ('linuxconfig.txt ',' r+'): >>> FileObject.Cari (0,2) >>> FileObject.tulis ('teks ini akan dilampirkan') >>> FileObject.Tutup ()
Salinan The mencari
kaedah mengambil dua hujah: yang pertama adalah mengimbangi
, yang kedua adalah kedudukan dari mana pengimbang harus dikira, di mana 0
(lalai jika hujah ini ditinggalkan) adalah permulaan fail, 1
adalah offset semasa, dan 2
adalah akhir fail. Dalam kes ini, kami menggunakan offset 0 dari akhir fail, oleh itu bergerak ke hujung fail itu sendiri. Perhatikan bahawa menentukan pengimbang bukan sifar dalam kes ini akan menimbulkan io.Tidak disokong
pengecualian, kerana mustahil untuk melakukan pencarian yang tidak sifar,.
Mod 'w+'
Mod ini berfungsi dengan cara ini: fail akan dibuka baik untuk membaca dan menulis. Sekiranya fail ada kandungannya akan dipotong, jika tidak, fail akan dibuat. Sama seperti contoh sebelumnya, mungkin untuk membaca dan menulis fail, namun terdapat dua perbezaan besar: yang pertama adalah bahawa kandungan fail akan dipotong sebaik sahaja ia dibuka (dan bukan jika anda aktif menulis sesuatu ke ia), yang kedua adalah bahawa fail akan dibuat jika tidak ada.
Mod 'a+'
Semasa menentukan mod ini dengan fungsi terbuka Python, kami memperoleh tingkah laku berikut: Sama seperti dalam contoh sebelumnya fail dibuka untuk membaca dan menulis, bagaimanapun, aliran itu diposisikan pada akhir dari fail, jadi apa -apa kandungan baru ia dilampirkan kepada yang ada.
Dua perkara harus diperhatikan: kerana aliran diposisikan pada akhir fail, jika kita cuba menggunakan Baca
kaedah pada objek fail untuk mendapatkan kandungan semasa, ia akan mengembalikan rentetan kosong. Untuk dapat membaca kandungannya, kita harus terlebih dahulu bergerak ke permulaan fail, menggunakan kaedah Seek dengan cara berikut:
FileObject.Cari (0)
Salinan Perkara kedua, yang sangat penting untuk diperhatikan, ialah apabila menggunakan mod ini, walaupun kita bergerak ke permulaan fail seperti yang kita lakukan dalam contoh di atas, dan tulis, kandungan yang ada itu tidak hilang: kandungan baru Selalu dilampirkan.
Menutup objek fail
Setelah selesai bekerja dengan objek fail kami, kami harus selalu ingat untuk menutupnya, atas beberapa sebab. Di Primis kerana beberapa operasi, seperti menulis, menjadi berkesan hanya apabila objek fail ditutup dan kandungannya memerah, kedua untuk membebaskan sumber sistem dan untuk kejelasan kod. Terdapat dua cara kita dapat menutup objek fail: yang pertama adalah dengan memanggil Tutup
kaedah pada objek fail, seperti yang kita lihat di atas. Yang kedua, adalah dengan menggunakan dengan
Penyata:
dengan terbuka ('linuxconfig.txt ',' r ') sebagai fileObject: content = fileObject.Baca () # melaksanakan operasi yang diperlukan
Salinan Apa yang berlaku dalam kes ini? Menggunakan pernyataan ini, ungkapan di sebelah dengan
, Dalam kes ini buka ('linuxconfig.txt ',' r ')
, dinilai ke objek fail, yang menyokong protokol pengurus konteks, kerana ia melaksanakannya __Enter__
dan __exit__
kaedah. Objek fail kemudiannya alias ke FileObject
. Selepas kod yang terkandung di dalam blok dilaksanakan, __exit__
kaedah objek fail dipanggil secara automatik, dan objek fail ditutup. Menggunakan pengurus konteks sangat berguna, kerana objek akan selalu ditutup sebaik sahaja kita selesai mengendalikannya: satu perkara yang kurang ingat.
Kesimpulan
Dalam tutorial ini, kami belajar bagaimana menggunakan Python terbina dalam buka
berfungsi untuk membuat objek fail, digunakan untuk berinteraksi dengan fail. Kami melihat pelbagai mod yang boleh diserahkan kepada fungsi dan bagaimana mereka mengubah tingkah laku objek fail. Akhirnya, kita melihat mengapa penting untuk sentiasa menutup objek fail setelah kita selesai bekerja dengannya, bagaimana kita dapat melakukannya dengan menggunakan Tutup
kaedah, dan bagaimana ia dapat dilakukan secara automatik, jika kita menggunakan dengan
pernyataan, dan pengurus konteks. Seperti yang selalu dicadangkan, anda boleh berunding dengan dokumentasi rasmi untuk meningkatkan pengetahuan anda.
Lihat juga tutorial Python kami yang lebih luas untuk lebih banyak konsep berkaitan Python atau fail membaca dan menulis kami dengan Panduan Python.
Tutorial Linux Berkaitan:
- Mengendalikan input pengguna dalam skrip bash
- Menguasai Gelung Skrip Bash
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- Manipulasi data besar untuk keseronokan dan keuntungan bahagian 1
- Manipulasi data besar untuk keseronokan dan keuntungan bahagian 3
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Perkara yang hendak dipasang di Ubuntu 20.04
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Manipulasi data besar untuk keseronokan dan keuntungan bahagian 2
- Cara Gunung ISO di Linux
- « Cara Berinteraksi dengan Bekas Docker
- Cara Memasang NextCloud di Ubuntu 18.04 Bionic Beaver Linux »