Python programlarınızda dosyaları sağlam bir şekilde işlemek, herhangi bir işlem yapmaya çalışmadan önce varlıklarını kontrol etmenin güvenilir bir yolunu gerektirir. Bu, beklenmedik hataları önler ve kodunuzun genel kararlılığını artırır. Python bunu başarmak için her birinin kendi avantajları ve dezavantajları olan birkaç yaklaşım sunar. Bu makale üç yaygın ve etkili yöntemi ele almaktadır:
İçerik Tablosu
os.path.isfile()
kullanımıpathlib.Path.is_file()
kullanımı- Dosya Varlık Kontrolleri için
try...except
‘ten Neden Kaçınılmalı?
os.path.isfile()
kullanımı
Tüm Python sürümlerinde bulunan os.path.isfile()
fonksiyonu, bir dosyanın var olup olmadığını ve düzenli bir dosya olup olmadığını (dizin veya başka bir özel dosya türü değil) doğrudan ve verimli bir şekilde kontrol etmenin bir yolunu sağlar. Basitliği ve hızı nedeniyle genellikle tercih edilen yöntemdir.
import os
def file_exists(filepath):
"""os.path.isfile() kullanarak bir dosyanın var olup olmadığını kontrol eder.
Args:
filepath: Dosyanın yolu.
Returns:
Dosya var ve düzenli bir dosyaysa True, aksi takdirde False.
"""
return os.path.isfile(filepath)
filepath = "my_file.txt"
if file_exists(filepath):
print(f"'{filepath}' dosyası mevcut.")
else:
print(f"'{filepath}' dosyası mevcut değil.")
pathlib.Path.is_file()
kullanımı
Python 3.4 ve üzeri için pathlib
modülü daha modern ve nesne yönelimli bir yaklaşım sunar. Path.is_file()
yöntemi, aynı kontrolü temiz ve okunabilir bir şekilde gerçekleştirmenin bir yolunu sağlar.
from pathlib import Path
def file_exists(filepath):
"""pathlib.Path.is_file() kullanarak bir dosyanın var olup olmadığını kontrol eder.
Args:
filepath: Dosyanın yolu.
Returns:
Dosya var ve düzenli bir dosyaysa True, aksi takdirde False.
"""
return Path(filepath).is_file()
filepath = "my_file.txt"
if file_exists(filepath):
print(f"'{filepath}' dosyası mevcut.")
else:
print(f"'{filepath}' dosyası mevcut değil.")
Dosya Varlık Kontrolleri için try...except
‘ten Neden Kaçınılmalı?
FileNotFoundError
‘ı kontrol etmek için teknik olarak bir try...except
bloğu kullanmak mümkün olsa da, bu yaklaşım dosya varlık kontrolleri için genellikle önerilmez. Sadece var olup olmadığını bilmeniz gerekse bile dosyayı açmayı denediği için daha az verimlidir. Ayrıca, dosya erişimiyle ilgili farklı sorunları gösterebilecek diğer potansiyel IOError
istisnalarını maskeleyebilir ve hata ayıklamayı daha zor hale getirebilir.
Öneri: Geniş uyumluluğu ve verimliliği için os.path.isfile()
‘ı veya Python 3.4+ için daha temiz kod için pathlib.Path.is_file()
‘ı önceliklendirin.