Cara memeriksa fail dibuka atau ditutup di Python

How Check File Is Opened



Fail digunakan untuk menyimpan data secara kekal. Bekerja dengan fail adalah tugas yang sangat biasa bagi setiap bahasa pengaturcaraan. Banyak fungsi terbina dalam Python untuk membuat, membuka, membaca, menulis dan menutup fail. Dua jenis fail dapat dibuat untuk menyimpan data. Ini adalah fail teks dan fail binari. Sebarang fail mesti dibuka sebelum membaca atau menulis. The buka() fungsi digunakan di Python untuk membuka fail. Menggunakan buka() fungsi adalah salah satu cara untuk memeriksa fail tertentu dibuka atau ditutup. Sekiranya buka() fungsi membuka fail yang dibuka sebelumnya, kemudian Ralat IO akan dihasilkan. Cara lain untuk memeriksa fail dibuka atau ditutup adalah dengan memeriksa nilai-nilai ditutup harta benda pengendali fail. Menggunakan menamakan semula () fungsi adalah cara lain untuk memeriksa fail dibuka atau ditutup. Kaedah yang berbeza untuk memeriksa mana-mana fail dibuka atau ditutup di Python telah ditunjukkan dalam tutorial ini.

Buat fail untuk diperiksa:

Anda boleh menggunakan fail yang ada atau membuat fail baru untuk menguji contoh kod yang ditunjukkan dalam tutorial ini. Fail teks baru bernama pelanggan.txt telah dibuat dengan kandungan berikut untuk digunakan kemudian di bahagian seterusnya tutorial.







Nama ID E-mel
01 Jony Liver [dilindungi e-mel]
02 Manik Hossain [dilindungi e-mel]
03 Neha Akter [dilindungi e-mel]
04 Janatul Ferdous [dilindungi e-mel]
05 Helal Uddin [dilindungi e-mel]



Contoh-1: Periksa fail dibuka atau tidak dengan menggunakan IOError

Ralat IO menghasilkan apabila fungsi open () dipanggil untuk membuka fail yang telah dibuka sebelumnya. Buat fail python dengan skrip berikut untuk memeriksa fail dibuka atau tidak dengan menggunakan cuba-kecuali sekatan. Di sini, sebarang nama fail yang ada akan diambil sebagai input dan dibuka untuk dibaca. Seterusnya, fungsi open () dipanggil lagi untuk membuka fail yang sama yang akan menaikkan IOError dan mencetak mesej ralat.



# Ambil nama fail untuk diperiksa
nama fail = input('Masukkan sebarang nama fail yang ada: n')
# Buka fail untuk pertama kalinya menggunakan fungsi open ()
fileHandler = terbuka(nama fail,'r')
# Cuba buka fail yang sama fail sekali lagi
cuba:
dengan terbuka('nama fail','r') sebagaifail:
# Cetak mesej kejayaan
mencetak('Fail telah dibuka untuk dibaca.')
# Naikkan kesalahan sekiranya fail dibuka sebelumnya
kecuali IOError:
mencetak('Fail telah dibuka.')

Pengeluaran:

Output berikut akan muncul setelah melaksanakan skrip di atas. Di sini, pelanggan.txt ada di lokasi semasa, dan mesej ralat, Fail telah dibuka, telah dicetak untuk Ralat IO pengecualian.





Contoh-2: Periksa fail ditutup atau tidak dengan menggunakan harta tertutup.

Nilai bagi ditutup harta tanah akan benar sekiranya ada fail ditutup. Buat fail python dengan skrip berikut untuk memeriksa fail ditutup atau tidak yang ada di lokasi semasa. Skrip contoh sebelumnya akan menghasilkan ralat jika nama fail yang diambil dari pengguna tidak ada di lokasi semasa. Masalah ini telah diselesaikan dalam contoh ini. The awak modul digunakan di sini untuk memeriksa kewujudan nama fail yang akan diambil dari pengguna. Fungsi check_closed () telah ditentukan untuk memeriksa fail ditutup atau tidak yang akan dipanggil jika fail tersebut ada.



# Modul import os untuk memeriksa kewujudan fail
mengimport
# Fungsi Drfine periksa fail ditutup atau tidak
def check_closed():
sekiranyafileHandler.closed == Salah:
# Cetak mesej kejayaan
mencetak('Fail telah dibuka untuk dibaca.')
lain:
# Cetak mesej ralat
mencetak('Fail telah ditutup.')

# Ambil nama fail untuk diperiksa
nama fail = input('Masukkan sebarang nama fail yang ada: n')
# Periksa fail ada atau tidak
sekiranyaos.path. wujud(nama fail):
# Buka fail untuk dibaca
fileHandler = terbuka(nama fail,'r')
# Panggil fungsi
semak_tutup()
lain:
# Cetak mesej jika fail tidak ada
mencetak('Fail tidak wujud.')

Pengeluaran:

Output berikut akan muncul setelah melaksanakan skrip di atas. Di sini, pelanggan.txt ada di lokasi semasa, dan mesej kejayaan, Fail telah dibuka untuk dibaca, telah dicetak kerana nilai harta tertutup dikembalikan Salah .

Contoh-3: Periksa fail dibuka atau tidak dengan menggunakan OSError

The Ralat OS menghasilkan apabila fungsi ganti nama () dipanggil lebih dari satu kali untuk fail yang sudah dibuka. Buat fail python dengan skrip berikut untuk memeriksa fail dibuka atau ditutup dengan menggunakan Ralat OS . Modul os telah digunakan dalam skrip untuk memeriksa keberadaan fail dan menamakan semula fail. Apabila menamakan semula () fungsi dipanggil untuk kali kedua, OSError akan dihasilkan, dan mesej ralat tersuai akan dicetak.

# Modul import os untuk memeriksa kewujudan fail
mengimport
# Tetapkan nama fail yang ada
nama fail ='pelanggan.txt'
# Tetapkan nama fail baru
nama baru ='pelanggan.txt'
# Periksa fail ada atau tidak
sekiranyaos.path. wujud(nama fail):
cuba:
# Panggil fungsi ganti nama untuk kali pertama
nama samaran(nama fail, nama baru)
# Panggil fungsi ganti nama untuk kali kedua
nama samaran(nama fail, nama baru)
# Naikkan kesalahan sekiranya fail telah dibuka
kecuali OSError:
mencetak('Fail masih dibuka.')

lain:
# Cetak mesej jika fail tidak ada
mencetak('Fail tidak wujud.')

Pengeluaran:

Output berikut akan muncul setelah melaksanakan skrip di atas. Di sini, pelanggan.txt ada di lokasi semasa, dan mesej ralat, Fail masih dibuka, telah dicetak kerana Ralat OS pengecualian telah dihasilkan ketika kedua menamakan semula () fungsi telah dilaksanakan.

Kesimpulan:

Apabila kita perlu bekerja dengan fail yang sama berkali-kali dalam skrip, penting untuk mengetahui sama ada fail itu dibuka atau ditutup. Lebih baik memanggil fungsi tutup () untuk menutup fail setelah menyelesaikan operasi fail. Kesalahan berlaku apabila fail dibuka untuk kali kedua dalam skrip yang sama tanpa menutupnya. Penyelesaian yang berbeza untuk masalah ini telah ditunjukkan dalam tutorial ini dengan menggunakan contoh mudah untuk membantu pengguna python.