Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Hazır Kod Bankası - Konu 10: Python ile Dosya İşlemleri Temelleri



Hazır Kod Bankası Serimizin Onuncu Konusu: Python ile Dosya İşlemleri!

Merhaba arkadaşlar! Programlama dilleri genellikle sadece hafızadaki verilerle çalışmaz, aynı zamanda dış dünyadaki dosyalarla etkileşim kurma yeteneğine sahiptir. Veritabanları büyük ve yapısal veri kümeleri için ideal olsa da, çoğu zaman daha basit ihtiyaçlar için dosyalarla çalışmak yeterli ve kullanışlıdır. Yapılandırma dosyalarını okumak, program çıktılarını kaydetmek (loglama) veya küçük veri setlerini saklamak gibi görevlerde dosya işlemleri kritik rol oynar.

Bu konuda, Python dilini kullanarak metin dosyaları üzerinde temel dosya okuma (`read`) ve yazma (`write`) işlemlerini nasıl yapacağımızı öğreneceğiz.

Ön Gereksinim: Bu konudaki kodları çalıştırmak için bilgisayarınızda Python yüklü olmalıdır. (Bir önceki konuda Python kurulumunu görmüştük.)

1. Dosya Açma (`open()`) ve Modları

Python'da bir dosyayı okumak veya yazmak için öncelikle `open()` fonksiyonu ile dosyayı açmanız gerekir. Bu fonksiyon iki ana parametre alır: dosyanın yolu (adı) ve dosya açma modu.

Python:
# Dosya yolu ve adı
dosya_adi = "ornek_dosya.txt"

# Dosyayı açma (sadece okuma modu)
dosya = open(dosya_adi, 'r')

# İşlem bittikten sonra dosyayı kapatmak önemlidir
dosya.close()

# Dosya bulunamazsa hata verir (FileNotFoundError)

Yaygın Dosya Açma Modları:
  • `'r'` (read): Dosyayı okuma moduyla açar. Dosya yoksa `FileNotFoundError` verir. Dosya işaretçisi dosyanın başına konulur.
  • `'w'` (write): Dosyayı yazma moduyla açar. Eğer dosya varsa içeriğini tamamen siler ve baştan yazar. Dosya yoksa oluşturur. Dosya işaretçisi dosyanın başına konulur.
  • `'a'` (append): Dosyayı ekleme moduyla açar. Eğer dosya varsa içeriğini silmez, yeni yazılan veriler dosyanın sonuna eklenir. Dosya yoksa oluşturur. Dosya işaretçisi dosyanın sonuna konulur.
  • `'x'` (create): Dosyayı oluşturma moduyla açar. Dosya zaten varsa `FileExistsError` verir. Dosya yoksa oluşturur.
  • `'t'` (text): Metin modu (varsayılan). Dosya içeriği metin olarak işlenir.
  • `'b'` (binary): İkili (binary) mod. Resim, ses dosyaları gibi metin olmayan dosyalar için kullanılır. `'rb'`, `'wb'`, `'ab'` gibi kullanılır.
Metin dosyaları için genellikle `'r'`, `'w'`, `'a'` modlarını kullanırız ve `'t'` modu varsayılan olduğu için belirtmek zorunda kalmayız.

2. Güvenli Dosya İşlemi: `with open(...)`

Dosya işlemlerinde en iyi pratik, dosyayı açtıktan sonra işiniz bittiğinde mutlaka kapatmaktır (`.close()`). Aksi takdirde kaynak sızıntısı olabilir veya dosya kilitli kalabilir. Python'da `with open(...) as ...:` yapısı, dosya işlemleri bittiğinde (veya bir hata oluşsa bile) dosyayı otomatik olarak kapatmayı garanti eder.

Python:
# Bu yöntem tavsiye edilir!
dosya_adi = "ornek_dosya.txt"

try:
    with open(dosya_adi, 'r') as dosya:
        # Dosya ile ilgili işlemler burada yapılır
        print("Dosya başarıyla açıldı ve otomatik kapatılacak.")
        # Örneğin: dosya.read(), dosya.readline() gibi...

except FileNotFoundError:
    print(f"Hata: {dosya_adi} dosyası bulunamadı.")

# 'with' bloğundan çıkıldığında dosya otomatik kapatılmış olur
Açıklama: `with` anahtar kelimesiyle başlayan blok, dosya nesnesi üzerinde çalışılacak kısmı belirtir. Bloktan çıkıldığında (normal veya hata ile), dosya nesnesinin `.close()` metodu otomatik çağrılır. `try...except` bloğu ise dosya bulunamadığında programın çökmesini engeller.

3. Dosyadan Veri Okuma (`read`, `readline`, `readlines`)

Dosyayı okuma modunda (`'r'`) açtıktan sonra içeriğini farklı şekillerde okuyabilirsiniz:

  • `dosya.read()`: Dosyanın tüm içeriğini tek bir metin (string) olarak okur. Büyük dosyalar için hafıza sorunu yaratabilir.
    Python:
        dosya_adi = "okunacak_dosya.txt" # Bu dosyanın var ve içinde veri var olduğunu varsayın
        try:
            with open(dosya_adi, 'r') as dosya:
                icerik = dosya.read()
                print("Dosya İçeriği:\n", icerik)
        except FileNotFoundError:
            print(f"Hata: {dosya_adi} dosyası bulunamadı.")
  • `dosya.readline()`: Dosyadan tek bir satır okur ve metin olarak döndürür. Satır sonundaki yeni satır karakterini (`\n`) de içerir.
    Python:
        dosya_adi = "okunacak_dosya.txt"
        try:
            with open(dosya_adi, 'r') as dosya:
                ilk_satir = dosya.readline()
                ikinci_satir = dosya.readline() # Bir sonraki satırı okur
                print("İlk satır:", ilk_satir, end="") # end="" ile satır sonundaki boşluğu engelleriz
                print("İkinci satır:", ikinci_satir, end="")
        except FileNotFoundError:
            print(f"Hata: {dosya_adi} dosyası bulunamadı.")
  • `dosya.readlines()`: Dosyadaki tüm satırları okur ve her satırın bir eleman olduğu bir liste olarak döndürür. Yine büyük dosyalar için hafıza sorunu olabilir.
    Python:
        dosya_adi = "okunacak_dosya.txt"
        try:
            with open(dosya_adi, 'r') as dosya:
                satirlar_listesi = dosya.readlines()
                print("Satırların Listesi:", satirlar_listesi)
                # Listeyi döngü ile gezebilirsiniz
                for satir in satirlar_listesi:
                    print(satir, end="")
        except FileNotFoundError:
            print(f"Hata: {dosya_adi} dosyası bulunamadı.")
  • Döngü ile Satır Satır Okuma (Tavsiye Edilir): Büyük dosyalar için en hafıza dostu yöntemdir. Dosya nesnesi üzerinde doğrudan döngü kurulabilir.
    Python:
        dosya_adi = "okunacak_dosya.txt"
        print("\nDosya İçeriği (Satır Satır):")
        try:
            with open(dosya_adi, 'r') as dosya:
                for satir in dosya: # Dosya nesnesi üzerinde döngü kurulur
                    print(satir, end="") # Her satırı yazdırır
        except FileNotFoundError:
            print(f"Hata: {dosya_adi} dosyası bulunamadı.")

    4. Dosyaya Veri Yazma (`write`, `writelines`)

    Dosyayı yazma (`'w'`) veya ekleme (`'a'`) modunda açtıktan sonra içeriğini yazabilirsiniz.
    • `dosya.write(string)`: Dosyaya verilen metni yazar. Yeni satıra geçmek isterseniz metnin sonuna `\n` eklemeniz gerekir. Yazılan karakter sayısını döndürür.
      Python:
          dosya_adi = "yazilacak_dosya.txt"
      
          # 'w' modu: Dosya varsa içeriğini siler, yoksa oluşturur
          with open(dosya_adi, 'w') as dosya:
              dosya.write("Bu ilk satır.\n") # Yeni satır karakteri ekledik
              dosya.write("Bu ikinci satır.")
      
          print(f"{dosya_adi} dosyasına yazma işlemi tamamlandı ('w' modu).")
      
          # 'a' modu: Dosya varsa sonuna ekler, yoksa oluşturur
          with open(dosya_adi, 'a') as dosya:
              dosya.write("\nBu eklenen üçüncü satır.") # Önce yeni satıra geç, sonra ekle
      
          print(f"{dosya_adi} dosyasına ekleme işlemi tamamlandı ('a' modu).")
      
          # Yazılan içeriği okuyup kontrol edelim (isteğe bağlı)
          print(f"\n{dosya_adi} dosyasının son içeriği:")
          try:
              with open(dosya_adi, 'r') as dosya:
                  print(dosya.read())
          except FileNotFoundError:
              print(f"Okunacak {dosya_adi} dosyası bulunamadı.")
    • `dosya.writelines(list_of_strings)`: Bir metin listesini alır ve her elemanı dosyaya yazar. Listenin her elemanının sonunda yeni satır karakteri (`\n`) yoksa, satırlar birleşik yazar.
      Python:
          dosya_adi = "satirlar.txt"
          satirlar = ["Satır 1\n", "Satır 2\n", "Satır 3\n"]
      
          with open(dosya_adi, 'w') as dosya:
              dosya.writelines(satirlar)
      
          print(f"{dosya_adi} dosyasına satırlar yazıldı.")

    Sıra Sizde!

    Yukarıdaki kod örneklerini kendi bilgisayarınızda bir Python dosyası (`.py`) olarak kaydedip çalıştırmayı denediniz mi? Farklı dosya açma modlarını (`'r'`, `'w'`, `'a'`) deneyerek sonuçları gözlemlediniz mi? Kendi metin dosyalarınızı oluşturup içinden veri okumayı veya dosyalara kendi yazdığınız metinleri eklemeyi başardınız mı?

    Dosya yolları (aynı klasördeki dosya adı, üst klasördeki dosya `../dosya.txt`, tam yol `C:/users/.../dosya.txt`), farklı modlar veya okuma/yazma metotları hakkında aklınıza takılan soruları bu konu altında sorabilirsiniz.

    Serinin Geleceği?

    Python ile dosya işlemlerinin temellerini gördük. Seriyi buradan sonra nasıl devam ettirelim?
    • Dosya işlemlerinde daha ileri konular (CSV, JSON dosyalarıyla çalışmak)?
    • Python'da Nesne Tabanlı Programlama (OOP) Temelleri?
    • Farklı bir dilde dosya işlemleri (PHP, JavaScript - Node.js tarafında)?
    • Başka bir programlama dili (Java, C#, C++)?
    • Popüler bir kütüphane veya framework'e giriş (Python web frameworkleri Flask/Django, Veri Analizi Pandas, JS frameworkleri React/Vue)?
    • Yazılım geliştirmede önemli genel kavramlar (Versiyon Kontrol - Git, Temel Veri Yapıları ve Algoritmalar)?
    • Veya başka önerileriniz mi var?
    Geri bildirimleriniz ve önerileriniz serinin geleceğini şekillendirecektir.

    Umarım bu konu dosya işlemleri hakkında temel bir bakış açısı sunmuştur. Görüşmek üzere!



    Bu konu, "Hazır Kod Bankası" serisinin onuncu parçasıdır ve "Yazılım Bilgi ve Yeni Başlayanlar İçin" kategorisi altında paylaşılmıştır.
 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri