Cara melakukan operasi input/output python pada file dengan fungsi terbuka python

Cara melakukan operasi input/output python pada file dengan fungsi terbuka python

Manipulasi file adalah operasi yang cepat atau lambat kita perlu melakukan di program kami. Built-in python membuka fungsi mengembalikan a objek file, Yang memungkinkan kami berinteraksi dengan file dalam mode yang berbeda: kami akan melihatnya di artikel ini.

Dalam tutorial Python ini, Anda akan belajar:

  • Cara menggunakan fungsi terbuka python.
  • Apa saja berbagai mode operasi yang dapat digunakan dengan fungsi terbuka Python.
  • Cara berinteraksi dengan objek file.
  • Mengapa penting untuk menutup objek file, dan bagaimana melakukannya.

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem OS-independen
Perangkat lunak Python3
Lainnya Tidak ada izin khusus yang diperlukan.
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa
>>> - Perintah Python untuk dieksekusi dalam cangkang interaktif

Pernyataan input dan output Python

Ada banyak alasan mengapa suatu program perlu berinteraksi dengan file: membaca konfigurasi dan pengaturan yang akan mempengaruhi perilaku program itu sendiri, atau mungkin data yang bertahan. Dalam tutorial ini kita akan melihat bagaimana menyelesaikan tugas -tugas tersebut, menggunakan fungsi Python Open dan berinteraksi dengan objek file.



Fungsi terbuka Python

Sebelum mulai membaca atau menulis file, kita perlu mempelajari bagaimana kita dapat mengaksesnya. Fungsi Python Open membuka file dan mengembalikan a objek file, meningkatkan an Oserror pengecualian jika sumber daya tidak dapat diakses. Fungsinya hanya memiliki satu argumen wajib, mengajukan, yang merupakan string atau objek byte yang mewakili jalur file yang akan dibuka:

>>> fobject = buka ('linuxconfig.txt') 
Menyalin

Baca mode - 'r'

Kami membuka LinuxConfig.txt file, dan objek file yang dihasilkan sekarang dirujuk oleh fobject. Itu adalah ular piton objek file yang mengimplementasikan metode seperti menulis Dan membaca. Bagaimana jika itu LinuxConfig.txt file tidak ada? A FileNotFoundError Pengecualian akan dinaikkan:

>>> fobject = buka ('linuxconfig.txt ') traceback (panggilan terbaru terakhir): file "", baris 1, di  FileNotFoundError: [errno 2] Tidak ada file atau direktori tersebut: 'LinuxConfig.txt' 
Menyalin

Seperti yang baru saja kami katakan di atas, satu -satunya argumen wajib dari fungsi terbuka Python adalah mengajukan. Saat digunakan seperti pada contoh di atas, fungsi beroperasi di mode teks dan file dibuka hanya untuk dibaca. Setara dengan verbose dari apa yang kami lakukan di atas adalah:

>>> fobject = buka ('linuxconfig.txt ',' rt ') 
Menyalin

Argumen kedua fungsi adalah mode. Pada kasus ini, 'rt', Dimana 'R' berdiri untuk membaca dan 'T' Menentukan bahwa kami beroperasi dalam mode teks. Juga dimungkinkan untuk membuka file dalam mode biner, mengganti 'T' dengan 'B': Dalam hal ini konten bytes, tanpa pengkodean apa pun akan dikembalikan. Sejak 'T' adalah mode default, mulai sekarang, kami akan menghilangkannya. Untuk membaca konten file yang dapat kita gunakan, misalnya, membaca metode. Ini akan mengembalikan semua konten file sebagai string:

>>> fobject.baca () 'LinuxConfig itu luar biasa!\N' 
Menyalin

Kapan beroperasi dalam mode baca, setiap upaya penulisan ke file akan menaikkan io.Poperasi yang tidak didukung pengecualian:

>>> fobject.tulis ('linuxconfig itu luar biasa!') Traceback (panggilan terbaru terakhir): file "", baris 1, di  io.OPER -OPEDEDOPERASI: Tidak dapat ditulis 
Menyalin

Jelas, ini bukan satu -satunya mode yang tersedia. Mari kita lihat yang lain.

Mode Tulis - 'W'

Saat menentukan 'W' sebagai nilai dari mode argumen dari membuka fungsi, jika ada file, itu adalah yang pertama terpotong (Seluruh kontennya dibuang) dan kemudian dibuka untuk menulis; Jika file tidak ada, itu dibuat. Dalam hal ini kami menggunakan menulis Metode objek file:

>>> fobject = buka ('linuxconfig.txt ',' w ') >>> fobject.tulis ('Kami baru saja menulis ke file!') 26 >>> fobject.menutup() 
Menyalin

Kami membuka file untuk menulis, daripada yang kami gunakan menulis Metode objek file, yang menulis string dan mengembalikan jumlah karakter yang ditulis, 26 dalam hal ini, akhirnya kami menggunakan menutup Metode untuk menutup objek: Langkah ini sangat penting, karena operasi tulis menjadi efektif hanya setelah konten file disiram (kita akan melihat pentingnya menutup objek file di akhir tutorial). Jika kita sekarang memeriksa konten file, kita melihat bahwa konten sebelumnya telah ditimpa, dan hanya berisi string:

'Kami baru saja menulis ke file tersebut!'

Seperti yang terjadi di atas, jika kita mencoba melakukan operasi yang tidak diizinkan oleh mode operasi, pengecualian dinaikkan. Dalam hal ini, jika kami mencoba membaca konten file yang kami dapatkan hasil berikut:

>>> fobject = buka ('linuxconfig.txt ',' w ') >>> fobject.baca () traceback (panggilan terbaru terakhir): file "", baris 1, di IO.OPER -OPEDEDOPERASI: Tidak dapat dibaca 
Menyalin

Menambahkan ke file: mode 'A'

Bagaimana jika kita ingin menambahkan file, menjaga konten saat ini? Kami harus menggunakan 'A' Mode (tambahkan). Saat mode ini digunakan, jika ada file, itu dibuka untuk menulis dan aliran diposisikan di ujungnya. Dengan cara ini konten file sebelumnya, akan dipertahankan. Jika file tidak ada, itu dibuat:

>>> fobject = buka ('linuxconfig.txt ',' a ') >>> fobject.tulis ('Teks ditambahkan!') 14 >>> fobject.menutup() 
Menyalin

Kami membuka file di 'A' mode, dan tulis string 'Teks ditambahkan' ke file. Konten sebelumnya belum terpotong:

LinuxConfig luar biasa! Teks yang ditambahkan! 

Mode 'X' - Kreasi Eksklusif

Mode pembukaan ini hanya tersedia di Python3. Saat digunakan, a FileExisserRor itu dinaikkan jika file sudah ada. Jika file tidak ada, itu dibuat dan dibuka untuk menulis:

fileObject = buka ('linuxconfig.txt ',' x ') traceback (panggilan terbaru terakhir): file "", baris 1, dalam  FileExisserRor: [errno 17] File ada: 'linuxconfig.txt' 
Menyalin

Setiap kali kita menulis sesuatu, itu ditambahkan ke konten sebelumnya, sampai kita menutup objek file:

>>> fileObject = buka ('linuxconfig1.txt ',' x ') >>> FileObject.tulis ('linuxconfig itu luar biasa lagi \ n') >>> FileObject.tulis ('saya ulangi: linuxconfig itu luar biasa!\ n ') >>> FileObject.menutup() 
Menyalin

Setelah menjalankan kode di atas, konten file baru akan:

LinuxConfig luar biasa! Saya ulangi: linuxconfig luar biasa! 

Karakter '+'

Kami melihat mode dasar yang dapat digunakan dengan membuka fungsi dan cara kerjanya. Dengan menambahkan '+' Karakter untuk masing -masing, kita bisa mendapatkan perilaku baru.

Mode 'R+'

Saat menambahkan karakter '+' ke mode 'r' ('r+'), sebuah file dibuka baik untuk membaca dan menulis; pengecualian dinaikkan jika file tidak ada. Aliran diposisikan di awal file, jadi jika ada sesuatu yang ditulisnya akan menimpa konten sebelumnya. Jika kita berada dalam mode ini, tetapi kita tetap ingin konten baru ditambahkan, memesan yang ada, kita harus mengubah posisi saat ini menggunakan mencari Metode objek file sebelum menulis, dengan cara berikut:

>>> fileObject = buka ('linuxconfig.txt ',' r+'): >>> FileObject.cari (0,2) >>> FileObject.Tulis ('Teks ini akan ditambahkan') >>> FileObject.menutup() 
Menyalin

Itu mencari Metode mengambil dua argumen: yang pertama adalah mengimbangi, yang kedua adalah posisi dari mana offset harus dihitung, di mana 0 (default jika argumen ini dihilangkan) adalah awal dari file, 1 adalah offset saat ini, dan 2 adalah akhir dari file. Dalam hal ini kami menggunakan offset 0 dari akhir file, oleh karena itu pindah ke akhir file itu sendiri. Perhatikan bahwa menentukan offset non-nol dalam kasus ini akan meningkatkan io.Poperasi yang tidak didukung pengecualian, karena tidak mungkin untuk melakukan pencarian yang bukan nol dan relatif akhir.

Mode 'W+'

Mode ini berfungsi seperti ini: File akan dibuka baik untuk membaca dan menulis. Jika file ada kontennya akan terpotong, jika tidak file akan dibuat. Sama seperti contoh sebelumnya, dimungkinkan untuk membaca dan menulis file, namun ada dua perbedaan besar: yang pertama adalah bahwa konten file akan dipotong segera setelah dibuka (dan bukan jika Anda aktif menulis sesuatu untuk itu), yang kedua adalah bahwa file akan dibuat jika tidak ada.



Mode 'A+'

Saat menentukan mode ini dengan fungsi Python Open, kami memperoleh perilaku berikut: seperti pada contoh sebelumnya file dibuka baik untuk membaca dan untuk menulis, namun, aliran diposisikan pada akhirnya file, jadi konten baru apa pun yang ditambahkan ke yang ada.

Dua hal harus dicatat: karena aliran diposisikan di akhir file, jika kita mencoba menggunakan membaca Metode pada objek file untuk mendapatkan konten saat ini, itu akan mengembalikan string kosong. Untuk dapat membaca konten, pertama -tama kita harus pindah ke awal file, menggunakan metode pencarian dengan cara berikut:

FileObject.mencari (0)
Menyalin

Yang kedua, hal yang sangat penting untuk diperhatikan, adalah bahwa ketika menggunakan mode ini, bahkan jika kita pindah ke awal file seperti yang kita lakukan dalam contoh di atas, dan melakukan penulisan, konten yang ada tidak hilang: konten baru Itu selalu ditambahkan.

Menutup Objek File

Setelah kami selesai bekerja dengan objek file kami, kami harus selalu ingat untuk menutupnya, karena berbagai alasan. Di Primis karena beberapa operasi, seperti menulis, menjadi efektif hanya ketika objek file ditutup dan isinya memerah, sekunder ke sumber daya sistem gratis dan untuk kejelasan kode. Ada dua cara kita dapat menutup objek file: yang pertama adalah dengan memanggil menutup metode pada objek file, seperti yang kita lihat di atas. Yang kedua, adalah dengan menggunakan dengan penyataan:

dengan terbuka ('linuxconfig.txt ',' r ') sebagai fileObject: content = fileObject.baca () # lakukan operasi yang diperlukan 
Menyalin

Apa yang terjadi dalam kasus ini? Menggunakan pernyataan ini, ekspresi di sebelah dengan, pada kasus ini buka ('linuxconfig.txt ',' r '), dievaluasi menjadi objek file, yang mendukung protokol Context Manager, karena mengimplementasikan __memasuki__ Dan __KELUAR__ metode. Objek file kemudian alias FileObject. Setelah kode yang terkandung dalam blok dieksekusi, __KELUAR__ Metode objek file dipanggil secara otomatis, dan objek file ditutup. Menggunakan Manajer Konteks sangat berguna, karena objek akan selalu ditutup segera setelah kami selesai beroperasi: satu hal yang lebih sedikit untuk diingat.

Kesimpulan

Dalam tutorial ini kami belajar cara menggunakan built-in python membuka fungsi untuk membuat objek file, digunakan untuk berinteraksi dengan file. Kami melihat berbagai mode yang dapat diteruskan ke fungsi dan bagaimana mereka mengubah perilaku objek file. Akhirnya, kami melihat mengapa penting untuk selalu menutup objek file setelah kami selesai bekerja dengannya, bagaimana kami dapat melakukannya dengan menggunakan menutup metode, dan bagaimana hal itu dapat dilakukan secara otomatis, jika kita menggunakan dengan pernyataan, dan manajer konteks. Seperti yang selalu disarankan, Anda dapat berkonsultasi dengan dokumentasi resmi untuk lebih meningkatkan pengetahuan Anda.

Lihat juga Tutorial Python kami yang lebih luas untuk lebih banyak konsep terkait Python atau file bacaan dan penulisan kami dengan panduan Python.

Tutorial Linux Terkait:

  • Menangani input pengguna dalam skrip bash
  • Menguasai loop skrip bash
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Manipulasi data besar untuk kesenangan dan keuntungan bagian 1
  • Manipulasi data besar untuk kesenangan dan keuntungan bagian 3
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Manipulasi data besar untuk kesenangan dan keuntungan bagian 2
  • Cara memasang gambar iso di linux