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ı

python

dosya = open("ornek.txt", "r")

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.

python

with open("ornek.txt", "r") as dosya: icerik = dosya.read() print(icerik)

2. readline() Metodu

Sadece bir satır okur.

python

with open("ornek.txt", "r") as dosya: satir = dosya.readline() print(satir)

3. readlines() Metodu

Tüm satırları liste olarak döner.

python

with open("ornek.txt", "r") as dosya: satirlar = dosya.readlines() for satir in satirlar: print(satir)

📝 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

python

with open("yeni_dosya.txt", "w") as dosya: dosya.write("Merhaba Python!\n") dosya.write("Dosya yazma işlemi başarılı.")

Bu kod, dosya mevcutsa içeriğini silip yeniden yazar.

2. writelines() Metodu

Liste şeklindeki verileri dosyaya yazar.

python

satirlar = ["Birinci satır\n", "İkinci satır\n", "Üçüncü satır\n"] with open("liste_dosya.txt", "w") as dosya: dosya.writelines(satirlar)


⚠️ 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

python

try: with open("olmayan_dosya.txt", "r") as dosya: icerik = dosya.read() print(icerik) except FileNotFoundError: print("Hata: Dosya bulunamadı.") except IOError: print("Hata: Dosya okuma hatası oluştu.")

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.

python

with open("turkce_dosya.txt", "r", encoding="utf-8") as dosya: print(dosya.read())

Yazarken de aynı şekilde:

python

with open("yeni_dosya.txt", "w", encoding="utf-8") as dosya: dosya.write("Merhaba, dünya! Türkçe karakterler destekleniyor.")

📊 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

python

import csv veriler = [ ["Ad", "Soyad", "Yaş"], ["Ahmet", "Yılmaz", 28], ["Elif", "Kaya", 34] ] with open("veriler.csv", "w", newline="", encoding="utf-8") as dosya: yazici = csv.writer(dosya) yazici.writerows(veriler)

CSV Dosyasını Okumak

python

with open("veriler.csv", "r", encoding="utf-8") as dosya: okuyucu = csv.reader(dosya) for satir in okuyucu: print(satir)

🗂️ Dosya Varlığını Kontrol Etme

Bir dosyanın var olup olmadığını kontrol etmek için os modülünü kullanabiliriz.

python

import os if os.path.exists("veriler.csv"): print("Dosya mevcut.") else: print("Dosya bulunamadı.")

📚 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ı.

python

def not_yaz(): notlar = input("Notunuzu girin: ") with open("notlar.txt", "a", encoding="utf-8") as dosya: dosya.write(notlar + "\n") print("Not kaydedildi.") def not_oku(): try: with open("notlar.txt", "r", encoding="utf-8") as dosya: print("\n--- Notlar ---") print(dosya.read()) except FileNotFoundError: print("Henüz kayıtlı not yok.") # Menü while True: print("\n1. Not Yaz\n2. Notları Oku\n3. Çıkış") secim = input("Seçiminiz: ") if secim == "1": not_yaz() elif secim == "2": not_oku() elif secim == "3": break else: print("Geçersiz seçim.")


🧾 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

python

import json veri = { "isim": "Ahmet", "yas": 30, "diller": ["Python", "JavaScript"] } with open("kisi.json", "w", encoding="utf-8") as dosya: json.dump(veri, dosya, ensure_ascii=False, indent=4)
  • 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

python

with open("kisi.json", "r", encoding="utf-8") as dosya: icerik = json.load(dosya) print(icerik) print("İsim:", icerik["isim"])

🗃️ Dosya ve Klasör Oluşturma / Silme

Klasör Oluşturmak

python

import os if not os.path.exists("yeni_klasor"): os.mkdir("yeni_klasor") print("Klasör oluşturuldu.") else: print("Klasör zaten var.")

Dosya Silmek

python

if os.path.exists("sil_dosya.txt"): os.remove("sil_dosya.txt") print("Dosya silindi.") else: print("Dosya bulunamadı.")

Klasör Silmek

python

if os.path.exists("yeni_klasor"): os.rmdir("yeni_klasor") print("Klasör silindi.")

⚠️ Not: os.rmdir() sadece boş klasörleri silebilir. İçinde dosya olan klasörleri silmek için shutil 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:

python

# Göreceli yol with open("veriler.txt", "r") as dosya: print(dosya.read()) # Mutlak yol (örnek - Windows) with open("C:/Users/Kullanici/Desktop/veriler.txt", "r") as dosya: print(dosya.read())

🚀 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.

python

with open("buyuk_dosya.txt", "r", encoding="utf-8") as dosya: for satir in dosya: print(satir.strip())

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:

python

with open("olmayan_dosya.txt", "r") as dosya: veri = dosya.read()

Çözüm:

python

try: with open("olmayan_dosya.txt", "r") as dosya: veri = dosya.read() except FileNotFoundError: print("Dosya bulunamadı. Lütfen dosya adını kontrol edin.")

2. Yazma Yetkisi Hatası (PermissionError)

Hata Örneği:

python

with open("/sistem/kritik.txt", "w") as dosya: dosya.write("Veri")

Çö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:

python

with open("metin.txt", "r", encoding="utf-8") as dosya: icerik = dosya.read()

🔁 Fonksiyonlarla Dosya İşlemleri

Kod tekrarını önlemek için dosya işlemlerini fonksiyon haline getirmek oldukça faydalıdır.

1. Dosya Yazma Fonksiyonu

python

def dosya_yaz(dosya_adi, veri): with open(dosya_adi, "w", encoding="utf-8") as dosya: dosya.write(veri)

2. Dosya Okuma Fonksiyonu


def dosya_oku(dosya_adi): try: with open(dosya_adi, "r", encoding="utf-8") as dosya: return dosya.read() except FileNotFoundError: return "Dosya bulunamadı."

Kullanım:

python

dosya_yaz("ornek.txt", "Fonksiyonlarla yazma işlemi") print(dosya_oku("ornek.txt"))

🧪 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:

python

def kullanici_kaydet(ad, soyad, email): with open("kullanicilar.txt", "a", encoding="utf-8") as dosya: dosya.write(f"{ad},{soyad},{email}\n") def kullanici_listele(): with open("kullanicilar.txt", "r", encoding="utf-8") as dosya: print("--- Kayıtlı Kullanıcılar ---") for satir in dosya: ad, soyad, email = satir.strip().split(",") print(f"Ad: {ad}, Soyad: {soyad}, Email: {email}") # Kullanıcıdan bilgi alma ad = input("Adınız: ") soyad = input("Soyadınız: ") email = input("Email adresiniz: ") kullanici_kaydet(ad, soyad, email) kullanici_listele()


❓ 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:

python

with open("dosya.txt", "r+", encoding="utf-8") as dosya: veri = dosya.read() dosya.write("\nYeni veri")

3. Satır satır okuma nasıl yapılır?

python

with open("dosya.txt", "r", encoding="utf-8") as dosya: for satir in dosya: print(satir.strip())

4. Dosya içeriğini liste olarak nasıl alabilirim?

python

with open("dosya.txt", "r", encoding="utf-8") as dosya: satirlar = dosya.readlines()

5. Dosya yoksa otomatik oluşturma nasıl yapılır?

"a" veya "w" modu kullanıldığında dosya otomatik oluşturulur:

python

with open("yeni_dosya.txt", "a", encoding="utf-8") as dosya: dosya.write("Yeni içerik")

🧠 İ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:

python

import json veri = {"ad": "Ahmet", "yas": 25} with open("veri.json", "w", encoding="utf-8") as dosya: json.dump(veri, dosya, ensure_ascii=False, indent=4)

JSON’dan veri okumak:

python

with open("veri.json", "r", encoding="utf-8") as dosya: okunmus_veri = json.load(dosya) print(okunmus_veri["ad"]) # Ahmet

✅ 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.


Yorumlar