- 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.
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
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?
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. - `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.