
Dosya işlemleri, uygulamaların kalıcı veri saklaması, yapılandırılmış veri alışverişi ve günlükleme (logging) gibi işlevleri için temel gereksinimdir. Bu rehberde open() ile dosya açma, okuma/yazma modları, CSV dosyalarıyla çalışma ve üretim benzeri senaryolar için iyi uygulamalar gösterilecektir. Temel tanımlar ve modlar için kısa bir giriş için Diveebi - Python'da Dosya İşlemleri kaynağı faydalı olacaktır.
Python'da dosya işlemleri için yerleşik open() fonksiyonu kullanılır. Dosya modları (ör. 'r', 'w', 'a') dosyanın nasıl açılacağını belirler. Manuel olarak close() çağrılabilir, ancak bağlam yöneticisi (context manager) kullanmak kapatmayı otomatik hâle getirir; bu yaklaşım kaynak yönetimi açısından önerilir (bkz. kaynaklar).
Bu modların ayrıntıları ve kullanım örnekleri için ayrıca Facadium rehberine bakabilirsiniz.
Basit bir metin dosyasını okumak için en sık kullanılan yöntem bağlam yöneticisidir:
with open('ornek.txt', 'r', encoding='utf-8') as f:
content = f.read()
Alternatif olarak satır satır okumak belleği daha tasarruflu kullanır:
with open('ornek.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line.strip())
Diğer seçenekler: f.readline() (tek satır), f.readlines() (tüm satırları liste olarak alır). Encoding parametresi (ör. 'utf-8') özellikle Türkçe karakterler için önemlidir.
Yazma örneği:
with open('ornek.txt', 'w', encoding='utf-8') as f:
f.write('Merhaba Dünya\n')
Eklemek için:
with open('ornek.txt', 'a', encoding='utf-8') as f:
f.write('Yeni satır\n')
'w' modu mevcut dosyayı sıfırlar; mevcut veriyi kaybetmek istemiyorsanız 'a' kullanın.
Görüntü, ses veya sıkıştırılmış veriler gibi ikili içerikler için 'rb'/'wb' kullanın:
with open('resim.png', 'rb') as f:
data = f.read()
Binary veriler üzerinde işlem yaparken byte dizileriyle (bytes) çalışıldığını unutmayın.
CSV dosyalarını okumak/yazmak için Python'un yerleşik csv modülü kolay ve etkilidir. Aşağıdaki örnekleri Muhammed DİNÇER'in rehberine paralel şekilde kullanabilirsiniz.
Örnek CSV içeriği:
isim,yaş,şehir
Ali,30,İstanbul
Ayşe,25,Ankara
Okuma (reader):
import csv
with open('kisiler.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
Alan isimleriyle çalışmak için DictReader kullanabilirsiniz:
with open('kisiler.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['isim'], row['yaş'])
Yazma (writer) örneği - Windows'ta fazladan boş satır oluşmasını önlemek için newline='' kullanılması önerilir:
with open('cikti.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['isim', 'yaş', 'şehir'])
writer.writerows([['Ali','30','İstanbul'], ['Ayşe','25','Ankara']])
DictWriter ile sözlük tabanlı yazma da mümkündür. CSV ile ilgili pratik ipuçları ve örnekler için Muhammed DİNÇER'in yazısı faydalıdır.
Daha büyük veya analize hazır veri setleri için pandas kütüphanesi sık tercih edilir:
import pandas as pd
df = pd.read_csv('kisiler.csv', encoding='utf-8')
df_filtered = df[df['yaş'] >= 30]
df_filtered.to_csv('ust30.csv', index=False)
Pandas, veri filtreleme ve dönüşümlerini tek satırda yapmayı kolaylaştırır; fakat küçük dosyalar için csv modülü daha hafif bir alternatiftir.
Kısa bir hata yakalama örneği:
try:
with open('dosya.txt','r',encoding='utf-8') as f:
data = f.read()
except FileNotFoundError:
print('Dosya bulunamadı')
Örnek kod (özet):
import csv
with open('kisiler.csv','r',encoding='utf-8') as infile:
reader = csv.DictReader(infile)
rows = [row for row in reader if int(row['yaş']) >= 30]
with open('ust30.csv','w',newline='',encoding='utf-8') as outfile:
writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames)
writer.writeheader()
writer.writerows(rows)
Kaynaklar ve ileri okuma:
Bu rehberde verilen örnekler temel kullanım içindir; üretim ortamında dosya izinleri, büyük dosya optimizasyonu ve güvenlik kontrollerini projenizin ihtiyaçlarına göre değerlendirin.
Yorumlar