Python'da bir dosyanın açılıp kapatılmadığı nasıl kontrol edilir

How Check File Is Opened



Dosya, verileri kalıcı olarak depolamak için kullanılır. Bir dosyayla çalışmak, herhangi bir programlama dilinin çok yaygın bir görevidir. Python'da dosyayı oluşturmak, açmak, okumak, yazmak ve kapatmak için birçok yerleşik işlev bulunur. Verileri depolamak için iki tür dosya oluşturulabilir. Bunlar metin dosyaları ve ikili dosyalardır. Okumadan veya yazmadan önce herhangi bir dosyanın açılması gerekir. NS açık() işlevi Python'da bir dosyayı açmak için kullanılır. Kullanmak açık() işlevi, belirli bir dosyanın açılıp kapatılmadığını kontrol etmenin bir yoludur. Eğer açık() işlevi önceden açılmış bir dosyayı açar, ardından IOError oluşturulacaktır. Bir dosyanın açılıp kapanmadığını kontrol etmenin başka bir yolu da dosyanın değerlerini kontrol etmektir. kapalı dosya işleyici nesnesinin özelliği. kullanma Adını değiştirmek() işlevi, dosyanın açılıp kapatılmadığını kontrol etmenin başka bir yoludur. Bu eğitimde Python'da herhangi bir dosyanın açılıp kapatıldığını kontrol etmenin farklı yolları gösterilmiştir.

Kontrol etmek için bir dosya oluşturun:

Bu öğreticide gösterilen örnek kodu test etmek için mevcut herhangi bir dosyayı kullanabilir veya yeni bir dosya oluşturabilirsiniz. adlı yeni bir metin dosyası client.txt öğreticinin sonraki bölümünde daha sonra kullanmak üzere aşağıdaki içerikle oluşturulmuştur.







Kimlik Adı E-posta
01 Jony Karaciğer [e-posta korumalı]
02 Manik Hossain [e-posta korumalı]
03 Neha Akter [e-posta korumalı]
04 Janatul Ferdous [e-posta korumalı]
05 Helal Uddin [e-posta korumalı]



Örnek-1: IOError kullanarak dosyanın açılıp açılmadığını kontrol edin

IOError Daha önce açılmış bir dosyayı açmak için open() işlevi çağrıldığında oluşturur. Kullanarak bir dosyanın açılıp açılmadığını kontrol etmek için aşağıdaki komut dosyasıyla bir python dosyası oluşturun. dene-hariç engellemek. Burada, mevcut herhangi bir dosya adı girdi olarak alınacak ve okumaya açılacaktır. Ardından, bir IOError oluşturacak ve hata mesajını yazdıracak aynı dosyayı açmak için open() işlevi yeniden çağrılır.



# Kontrol etmek için dosya adını alın
dosya adı = girdi('Mevcut herhangi bir dosya adını girin: ')
# open() işlevini kullanarak dosyayı ilk kez açın
fileHandler = aç(dosya adı,'r')
# Aynı dosyayı tekrar açmayı deneyin
denemek:
açık('dosya adı','r') olarakdosya:
# Başarı mesajını yazdır
Yazdır('Dosya okumak için açıldı.')
# Dosya daha önce açılmışsa hatayı yükselt
IOError hariç:
Yazdır('Dosya zaten açıldı.')

Çıktı:

Yukarıdaki betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Buraya, client.txt geçerli konumda mevcut ve hata mesajı, Dosya zaten açıldı, için yazdırdı IOError istisna.





Örnek-2: Kapalı özelliğini kullanarak dosyanın kapalı olup olmadığını kontrol edin.

değeri kapalı herhangi bir dosya kapatılırsa özellik true olacaktır. Geçerli konumda bulunan bir dosyanın kapalı olup olmadığını kontrol etmek için aşağıdaki komut dosyasıyla bir python dosyası oluşturun. Kullanıcıdan alınan dosya adı geçerli konumda mevcut değilse, önceki örnek komut dosyası bir hata üretecektir. Bu sorun bu örnekte çözülmüştür. NS sen modül burada kullanıcıdan alınacak dosya adının varlığını kontrol etmek için kullanılır. check_closed() işlevi, dosya varsa çağrılacak olan dosyanın kapalı olup olmadığını kontrol etmek için tanımlamıştır.



# Dosyanın varlığını kontrol etmek için os modülünü içe aktarın
içe aktarmak
# Drfine işlevi, dosyanın kapalı olup olmadığını kontrol edin
def check_closed():
EğerfileHandler.closed == Yanlış:
# Başarı mesajını yazdır
Yazdır('Dosya okumak için açıldı.')
Başka:
# Hata mesajını yazdır
Yazdır('Dosya kapandı.')

# Kontrol etmek için dosya adını alın
dosya adı = girdi('Mevcut herhangi bir dosya adını girin: ')
# Dosyanın var olup olmadığını kontrol edin
Eğeros.path.var(dosya adı):
# Dosyayı okumak için açın
fileHandler = aç(dosya adı,'r')
# Fonksiyonu çağır
check_closed()
Başka:
# Dosya yoksa mesajı yazdır
Yazdır('Dosya bulunmuyor.')

Çıktı:

Yukarıdaki betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Buraya, client.txt geçerli konumda mevcut ve başarı mesajı, Dosya okumak için açıldı, kapatılan özelliğin değeri döndürüldüğü için yazdırıldı YANLIŞ .

Örnek-3: OSError kullanarak dosyanın açılıp açılmadığını kontrol edin

NS OSE Hatası zaten açılmış bir dosya için rename() işlevi birden fazla kez çağrıldığında üretir. Kullanarak bir dosyanın açılıp kapatılmadığını kontrol etmek için aşağıdaki komut dosyasıyla bir python dosyası oluşturun. OSE Hatası . os modülü, dosyanın varlığını kontrol etmek ve dosyayı yeniden adlandırmak için komut dosyasında kullanılmıştır. Ne zaman Adını değiştirmek() işlevi ikinci kez çağrılır, OSError oluşturulur ve özel hata mesajı yazdırılır.

# Dosyanın varlığını kontrol etmek için os modülünü içe aktarın
içe aktarmak
# Mevcut dosya adını ayarlayın
dosya adı ='clients.txt'
# Yeni dosya adını belirleyin
yeni isim ='müşteriler.txt'
# Dosyanın var olup olmadığını kontrol edin
Eğeros.path.var(dosya adı):
denemek:
# Yeniden adlandırma işlevini ilk kez çağırın
os.yeniden adlandır(dosya adı, yeni ad)
# Yeniden adlandırma işlevini ikinci kez çağırın
os.yeniden adlandır(dosya adı, yeni ad)
# Dosya açıldıysa hata yükselt
OSError hariç:
Yazdır('Dosya hala açık.')

Başka:
# Dosya yoksa mesajı yazdır
Yazdır('Dosya bulunmuyor.')

Çıktı:

Yukarıdaki betiği çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Buraya, client.txt geçerli konumda mevcut ve hata mesajı, Dosya hala açık, yazdırdı çünkü OSE Hatası ikinci olduğunda istisna oluşturuldu Adını değiştirmek() işlevi yürütülmüştür.

Çözüm:

Bir script içerisinde aynı dosya ile birden çok kez çalışmamız gerektiğinde, dosyanın açılıp kapanmadığını bilmek esastır. Dosya işlemini tamamladıktan sonra dosyayı kapatmak için close() işlevini çağırmak daha iyidir. Hata, aynı komut dosyasında bir dosya kapatılmadan ikinci kez açıldığında oluşur. Bu öğreticide, python kullanıcılarına yardımcı olmak için basit örnekler kullanılarak bu soruna farklı çözümler gösterilmiştir.