
Python ile dosya işlemleri uygulama geliştirmede sık kullanılan temel becerilerdendir. Bu yazıda open() kullanımından başlayarak okuma/yazma yöntemlerini, ikili (binary) dosya işlemlerini, güvenli kullanım önerilerini ve sık karşılaşılan durumlara yönelik pratik örnekleri adım adım ele alacağız.
Örnekler hem yeni başlayanlar hem de günlük geliştirme sırasında hızlı referans ihtiyacı olanlar için hazırlanmıştır. Temel prensipler: hangi modda açtığınız, nasıl kapattığınız (context manager) ve hata yönetimini doğru yapmaktır — bu konular kaynaklarda da vurgulanmaktadır.
Python'da dosya açmak için yerleşik open() fonksiyonu kullanılır. Fonksiyon bir dosya nesnesi (file object) döndürür; bu nesne üzerinden okuma/yazma yapılır. En sık kullanılan modlar şunlardır: 'r' (okuma), 'w' (yazma, varsa üzerine yazar), 'a' (ekleme) ve 'b' (ikili/binary). Bu temel bilgilerle ilgili kaynaklar için örnek dokümanlara bakabilirsiniz.
Detaylı mod ve kullanım açıklamaları için rehber örnekleri inceleyebilirsiniz: Cyber War — Python Dosya İşlemleri ve Derslik: Dosya İşlemleri.
Dosya ile iş bittikten sonra dosyayı kapatmak önemlidir. Bunun için en güvenli ve tercih edilen yol with (context manager) kullanmaktır; böylece dosya bloğu sona erdiğinde Python dosyayı otomatik kapatır. Bu yaklaşım kaynak sızıntılarını ve açık kalan dosya tanıtıcılarını önlemeye yardımcı olur.
with open('veri.txt', 'r', encoding='utf-8') as f:
text = f.read()
Hemen her durumda with kullanmanız önerilir. Konuyla ilgili üniversite ders notlarında ve rehberlerde de aynı tavsiye bulunur; örneğin Harran Üniversitesi dokümanında context manager kullanımı belirtilmiştir: Harran Üniversitesi — Dosya Okuma Modları.
Dosyadan veri almak için birkaç farklı yöntem vardır; hangi yöntemi seçeceğiniz dosya boyutu ve ihtiyaçlarınıza bağlıdır:
Örnek: satır satır okuma
with open('log.txt', 'r', encoding='utf-8') as f:
for line in f:
process(line)
Bu metotlar ve kullanım örnekleri hakkında daha fazla teknik detay ToRbAcİ rehberinde de ele alınmaktadır: ToRbAcİ — Dosya Okuma ve Yazma.
Dosyaya yazarken kullanacağınız mod yazma davranışını belirler: 'w' var olan içeriği siler ve yeniden yazar, 'a' ise mevcut içeriğe ekleme yapar. Yazma metotları:
Örnek: dosyaya satır ekleme
with open('output.txt', 'a', encoding='utf-8') as f:
f.write('Yeni satır\n')
Metin dosyalarının dışında görüntü, ses veya ikili formatlı verilerle çalışırken dosyayı 'rb' veya 'wb' modunda açmalısınız. Bu mod byte nesneleriyle (bytes) çalışmayı sağlar; Python string'leri değil, ham veriyi okur/yazar.
with open('resim.png', 'rb') as src:
data = src.read()
with open('kopya.png', 'wb') as dst:
dst.write(data)
Binary mod ile ilgili temel açıklamalar ve örnekler için ders notlarına bakabilirsiniz: Derslik — Dosya İşlemleri.
Dosya işlemlerinde sık karşılaşılan hatalar; dosyanın bulunmaması (FileNotFoundError), izin problemleri (PermissionError) veya disk doluluğu gibi durumlardır. Bu hataları yakalamak için try-except blokları kullanın ve kullanıcıya veya log'a açıklayıcı mesaj bırakın.
try:
with open('veri.txt', 'r', encoding='utf-8') as f:
process(f.read())
except FileNotFoundError:
print('Dosya bulunamadı.')
except PermissionError:
print('Dosyaya erişim reddedildi.')
Try-except ile hata yönetimi başlangıç için yeterlidir; bu konuda üniversite ve rehber kaynakları benzer öneriler sunar: Harran Üniversitesi.
Güvenli yazma için dikkate alınması gerekenler: dosya yollarını doğrulayın, kullanıcı girdilerini doğrudan dosya adlarında kullanmaktan kaçının ve kritik güncellemeler için atomik yazma tekniklerini değerlendirin (örneğin geçici dosyaya yazıp sonra değiş tokuş etmek).
Büyük dosyalarla çalışırken hafızayı korumak önemlidir. Bazı pratik öneriler:
Hangi yöntemin daha uygun olduğu dosya boyutu ve uygulama gereksinimlerine göre değişir; pratik örnekler için rehber kaynaklara göz atabilirsiniz.
'rb'/'wb' kullanın.with open('giris.txt', 'r', encoding='utf-8') as src, open('cikis.txt', 'w', encoding='utf-8') as dst:
for line in src:
if not line.strip().startswith('#'):
dst.write(line)
Bu küçük örnek yorum satırlarını ("#" ile başlayanları) atarak yeni bir dosya oluşturur. Gerçek uygulamalarda ek hata kontrolü ve yol doğrulama eklemeyi unutmayın.
Kaynaklar ve önerilen okumalar:
Yorumlar