Python ile Dosya Okuma ve Yazma: Detaylı Anlatım + Kod Örnekleri
📘 Python ile Dosya Okuma ve Yazma: Adım Adım Rehber
Giriş
Python, sade ve okunabilir sözdizimi ile dosya işlemlerinde oldukça güçlü bir dil olarak öne çıkar. Dosya okuma ve yazma işlemleri, veri analizi, günlük kaydı (logging), kullanıcı bilgilerini kaydetme ve birçok farklı alanda kritik rol oynar. Bu yazımızda Python’da dosya işlemlerinin nasıl yapılacağını adım adım ve örnek kodlarla ele alacağız.
📂 Dosya İşlemlerine Giriş
Python’da dosyalarla çalışmak için yerleşik open()
fonksiyonu kullanılır. Bu fonksiyon, bir dosyayı belirli bir modda (okuma, yazma, ekleme vb.) açar ve üzerinde işlem yapılmasına olanak tanır.
open()
Fonksiyonu Kullanımı
Parametreler:
-
"r"
– Sadece okuma modu (read) -
"w"
– Sadece yazma modu (write), dosya yoksa oluşturur -
"a"
– Ekleme modu (append), dosya sonuna yazar -
"r+"
– Hem okuma hem yazma modu -
"b"
– İkili mod (binary) -
"t"
– Metin modu (varsayılan)
📖 Python ile Dosya Okuma
Dosya okuma işlemi farklı şekillerde yapılabilir. En yaygın yöntemleri aşağıda inceleyelim.
1. read()
Metodu
Dosyanın tamamını tek seferde okur.
2. readline()
Metodu
Sadece bir satır okur.
3. readlines()
Metodu
Tüm satırları liste olarak döner.
📝 Python ile Dosya Yazma
Dosya yazma işlemleri, kullanıcıdan veri alma, sonuçları kaydetme gibi durumlar için kullanılır.
1. write()
Metodu
Bu kod, dosya mevcutsa içeriğini silip yeniden yazar.
2. writelines()
Metodu
Liste şeklindeki verileri dosyaya yazar.
⚠️ Hata Yönetimi ile Güvenli Dosya İşlemleri
Dosya işlemleri sırasında dosyanın var olmaması, erişim izinlerinin yetersiz olması gibi nedenlerle hatalar meydana gelebilir. Bu nedenle dosya işlemleri yapılırken mutlaka hata yönetimi (try-except
) kullanmak iyi bir uygulamadır.
Örnek: Try-Except ile Dosya Okuma
Bu örnekte dosya bulunmazsa kullanıcıya uygun bir mesaj verilir ve program hata verip durmaz.
🔤 Encoding (Kodlama) Ayarları
Bazı durumlarda Türkçe karakterler (ç, ğ, ü, ş vs.) okunurken veya yazılırken sorun yaşanabilir. Bu tür karakter setlerine uygun dosya işlemleri için encoding="utf-8"
gibi parametre kullanmak gerekir.
Yazarken de aynı şekilde:
📊 CSV Dosyaları ile Çalışma
CSV dosyaları (Comma-Separated Values) veri analizi ve veri aktarımı işlemlerinde çok kullanılır. Python’da csv
modülü bu işlemler için idealdir.
CSV Dosyasını Yazmak
CSV Dosyasını Okumak
🗂️ Dosya Varlığını Kontrol Etme
Bir dosyanın var olup olmadığını kontrol etmek için os
modülünü kullanabiliriz.
📚 Dosya Okuma/Yazma Uygulaması: Basit Not Defteri
Uygulama Amacı
Kullanıcının girdiği notları bir dosyaya kaydeden ve daha sonra bu notları okuyan küçük bir Python uygulaması.
🧾 JSON Dosyaları ile Çalışmak
JSON (JavaScript Object Notation), veri alışverişinde kullanılan yaygın bir formattır. Python'da json
modülü kullanılarak JSON dosyaları okunabilir ve yazılabilir.
JSON Yazma Örneği
-
ensure_ascii=False
: Türkçe karakterlerin bozulmadan yazılmasını sağlar. -
indent=4
: JSON çıktısını daha okunabilir yapar.
JSON Okuma Örneği
🗃️ Dosya ve Klasör Oluşturma / Silme
Klasör Oluşturmak
Dosya Silmek
Klasör Silmek
⚠️ Not:
os.rmdir()
sadece boş klasörleri silebilir. İçinde dosya olan klasörleri silmek içinshutil
modülü kullanılır.
🗺️ Dosya Yolları (Path)
Dosya yolları belirlenirken iki tür yol kullanılır:
-
Relative Path (Göreceli Yol): Dosyanın bulunduğu klasöre göre konumu.
-
Absolute Path (Mutlak Yol): Dosyanın diskteki tam konumu.
Örnek:
🚀 Dosya Okuma Performansını Artırma
Eğer çok büyük dosyalarla çalışıyorsanız, dosyayı satır satır okuyarak hafıza kullanımını optimize edebilirsiniz.
Bu yöntem, milyonlarca satır içeren dosyaların işlenmesinde sistem kaynaklarını daha az tüketir.
🎯 Gerçek Hayat Senaryoları
Dosya okuma ve yazma işlemleri birçok alanda kullanılabilir:
-
✅ Günlük log kayıtlarını tutma (örneğin
log.txt
) -
✅ Otomatik yedekleme sistemleri
-
✅ Form verilerini kayıt altına alma
-
✅ Basit veri tabanı görevleri (JSON veya TXT dosyası ile)
-
✅ Kullanıcı davranışlarını analiz etme
-
✅ Raporlama sistemleri
❌ Dosya İşlemlerinde Sık Yapılan Hatalar ve Çözüm Yolları
Dosya okuma ve yazma işlemlerinde sık karşılaşılan bazı hatalar vardır. Bu hataların nedenlerini ve çözüm yollarını bilmek, daha stabil programlar yazmanıza yardımcı olur.
1. Dosya Bulunamama Hatası (FileNotFoundError
)
Hata Örneği:
Çözüm:
2. Yazma Yetkisi Hatası (PermissionError
)
Hata Örneği:
Çözüm:
-
Python dosyasını yönetici yetkisiyle çalıştırın.
-
Dosyanın yazılabilir olduğundan emin olun.
3. Kodlamadan Kaynaklı Karakter Sorunları
Çözüm:
Daima encoding="utf-8"
kullanmak iyi bir pratiktir:
🔁 Fonksiyonlarla Dosya İşlemleri
Kod tekrarını önlemek için dosya işlemlerini fonksiyon haline getirmek oldukça faydalıdır.
1. Dosya Yazma Fonksiyonu
2. Dosya Okuma Fonksiyonu
Kullanım:
🧪 Mini Proje: Kullanıcı Bilgisi Kayıt Sistemi
Amaç:
Kullanıcılardan alınan bilgileri bir dosyaya kaydetmek ve gerektiğinde bu bilgileri okumak.
Kod:
❓ Sık Sorulan Sorular (S.S.S.)
1. with open()
kullanmak neden daha güvenlidir?
Python'da dosya açma işlemlerinde with
bloğu, dosyanın iş bittikten sonra otomatik olarak kapanmasını sağlar. Bu, kaynak sızıntılarını ve dosya kilitlenmelerini engeller.
2. Dosyaya aynı anda hem okuma hem yazma yapabilir miyim?
Evet. "r+"
modu ile hem okuma hem yazma yapılabilir:
3. Satır satır okuma nasıl yapılır?
4. Dosya içeriğini liste olarak nasıl alabilirim?
5. Dosya yoksa otomatik oluşturma nasıl yapılır?
"a"
veya "w"
modu kullanıldığında dosya otomatik oluşturulur:
🧠 İleri Seviye: JSON ile Dosya İşlemleri
Python'da sadece düz metin değil, yapılandırılmış veri de dosyada tutulabilir. Bunun en yaygın örneği JSON formatıdır.
JSON’a veri yazmak:
JSON’dan veri okumak:
✅ Sonuç ve Özet
Python ile dosya okuma ve yazma, hem basit hem de ileri düzey projeler için vazgeçilmez bir yetenektir. Bu makalede:
-
Temel
open()
kullanımı -
read
,write
,readlines
,writelines
gibi metotlar -
with
bloğunun önemi -
Hatalarla başa çıkma yolları
-
Fonksiyonlaştırma
-
Mini bir kullanıcı kayıt sistemi
-
JSON işlemleri
gibi konular detaylıca ele alınmıştır. Python öğrenen herkes için bu bilgiler, hem bireysel projelerde hem de profesyonel yazılım geliştirmede yol gösterici olacaktır.