İster yeni başlayan ister profesyonel olsun, metin dosyalarıyla çalışmak Python kullanıcıları için en temel görevlerden biridir. Dildeki doğru araçlar kullanıldığında, verileri okumak, düzenlemek, işlemek ve kaydetmek sadece birkaç satırda gerçekleştirilebilir. Python'ın gücü, büyük veya küçük her türlü yazılım projesi için metne erişim, düzenleme ve uygun bir biçime dönüştürme için doğrudan işlevler sunan dosya işleme kolaylığında açıkça ortaya çıkar. Temelleri anlamak, geliştiricilerin özellikle çeşitli kaynaklardan toplanan kayıtlar, ayarlar veya verilerle çalışırken görevleri hızlı ve verimli bir şekilde tamamlamalarını sağlar.

Her gün çok sayıda dosyayla mı çalışıyorsunuz? Büyük ve küçük? Karmaşık ve düzenli? Göreviniz ne olursa olsun, Python dosya yönetimini inanılmaz derecede kolaylaştırır. Biraz kodlamayla saatlerce işten tasarruf edebilir ve rahatlayabilirsiniz. Python'ın dosya yönetimi konusundaki büyüsünü keşfedelim.
Bir metin dosyasını okuma
Kayıtlar, yapılandırma dosyaları, veri kümeleri veya herhangi bir metin biçimiyle çalışırken, ihtiyacınız olan ilk beceri bir dosyayı verimli bir şekilde okuyabilme becerisidir. Python, yerleşik `open()` fonksiyonu ve bazı faydalı okuma teknikleriyle bu süreci inanılmaz derecede kolaylaştırır. `open()` standart ağ geçidi olsa da, dosyaları işlemenin Pythonik yolu bir bağlam yöneticisi (`with` ifadesi) kullanmaktır.
with open("server.log", "r") as f:
content = f.read()
print(content)
Bu, "bana her şeyi ver" yaklaşımıdır. Dosya küçük veya orta boyuttaysa idealdir. Python, dosyanın tamamını tek bir dize olarak belleğe yükler. `with` kullanmak, Python'ın dosyayı sizin için kapatmasını sağlar. Dosya kaynaklarının kurulumunu ve silinmesini Python gerçekleştirir.
Eğer her satırı ayrı ayrı okumak isterseniz şu yöntemi kullanın:
with open("users.txt", "r") as f:
for line in f:
print(line.strip())
Python'da readline() ve readlines() fonksiyonlarından da faydalanabilirsiniz.
# Read the first line
with open("data.txt", "r") as f:
first_line = f.readline()
# Read all lines into a list
with open("data.txt", "r") as f:
lines = f.readlines()
`readline()` fonksiyonu, yalnızca belirli sayıda satıra ihtiyacınız olduğunda kullanışlıdır. Örneğin, lines[5] gibi, belirli satırlara dizine göre erişmeniz gerektiğinde kullanışlıdır. `readlines()` fonksiyonu, her satırı bir liste olarak sunar; bu da dizinleme, bölümlendirme ve hızlı dönüşümler için kullanışlıdır.
Metin dosyalarına yazma
Sonuç olarak, her Python geliştiricisinin bir dosyaya bir şeyi yeniden girmesi gerekir. Belki raporlar oluşturuyor, temiz veriler kaydediyor veya betiğinizden günlükler yazıyorsunuz. İyi haber şu ki, Python'da dosyalara yazmak, onları okumak kadar kolaydır. Bir dosyaya yeni içerik yazmak için:
report = "Daily summary: All systems operational.\n"
with open("summary.txt", "w") as f:
f.write(report)
log_entry = "User logged in at 14:32\n"
with open("activity.log", "a") as f:
f.write(log_entry)
lines = [
"apple\n",
"banana\n",
"cherry\n"
]
with open("fruits.txt", "w") as f:
f.writelines(lines)
Metin dosyaları içinde arama
target = "ERROR"
with open("server.log", "r") as f:
for line in f:
if target in line:
print("Found error:", line.strip())
import re
pattern = re.compile(r"User\s+\d+\s+logged\s+in")
with open("activity.log", "r") as f:
for line in f:
if pattern.search(line):
print("Match:", line.strip())

Tanımlayıcıları, zaman damgalarını, biçimleri veya yapı içeren herhangi bir şeyi keşfetmeniz gereken senaryoları düşünün. Bu örnekte, bir kullanıcının sayısal bir kimlikle oturum açtığı satırları buluyoruz.
Dosyalardaki metni değiştirme
Arama harika. Ancak er ya da geç dosyanın içeriğini değiştirmeniz gerekecek. Temel kalıpları anladığınızda Python, metin değiştirmeyi şaşırtıcı derecede kolay hale getirir. Temel arama ve değiştirme görevleri için Python'ın metin işlemlerini kullanabilirsiniz.
old = "ERROR"
new = "INFO"
with open("server.log", "r") as f:
content = f.read()
updated = content.replace(old, new)
with open("server.log", "w") as f:
f.write(updated)
import re
pattern = r"\bUser\s+(\d+)\b"
replacement = r"Account \1"
with open("activity.log", "r") as f:
content = f.read()
updated = re.sub(pattern, replacement, content)
with open("activity.log", "w") as f:
f.write(updated)
Diyelim ki bir metin dosyanız var ve satır sayısı, kelime sayısı ve kelime tekrar sayısı gibi bazı temel ölçütlere ihtiyacınız var. Bu bilgiler metin analizi, raporlama ve veri işleme için faydalı olabilir. Python bunu kolaylaştırır. Sayma için döngüler kullanabilirsiniz.
line_count = 0
char_count = 0
ile açık(“notlar.txt”, "R") as f:
için hat in f:
satır_sayısı += 1
karakter_sayısı += len(astar)
baskı(“Çizgiler:”(satır_sayısı)
baskı(“Karakterler:”, karakter_sayısı)
Bu basit döngü, büyük dosyalarda bile işe yarar. Her seferinde bir satır okuyun, sayın ve uzunluğu boyunca toplam karakter sayısını takip edin. Kelime saymak için:
word_count = 0
with open("notes.txt", "r") as f:
for line in f:
words = line.split()
word_count += len(words)
print("Words:", word_count)
Her bir satırı .split() kullanarak bölmek, basit kelime tabanlı ölçümler yaparken ideal olan bir kelime listesi sağlar.
Daha gelişmiş kelime analizi için modülü kullanabilirsiniz collections , bunun gibi:
from collections import Counter
counter = Counter()
with open("notes.txt", "r") as f:
for line in f:
counter.update(line.split())
print(counter.most_common(5))

En yaygın kelimeleri bulmanız gerekiyorsa, "Sayaç" aracı çok kullanışlıdır. Öğeleri sizin için sayar ve hatta .most_common() fonksiyonunu kullanarak en yaygın kelimeleri (N) bile söyleyebilir.
Dosyaları böl ve birleştir
Metin dosyaları çok büyük olabilir. Milyonlarca satır içeren veri kümeleriyle veya tek seferde işlenmesi zor olan büyük boyutlu dışa aktarımlarla çalıştığınızı düşünün. Bazen bir dosyayı daha küçük parçalara bölmeniz, bazen de birden fazla dosyayı tek, anlaşılır ve birleşik bir çıktıda birleştirmeniz gerekir. Python her iki görevi de kolaylıkla halleder.
Bir dosyayı bölmenin bir yolu, belirli sayıda satırı alıp bunları yeni dosyalara yazmaktır. İşte nasıl yapılacağı:
chunk_size = 10
file_number = 1
current_lines = []
with open("bigdata.txt", "r") as f:
for i, line in enumerate(f, start=1):
current_lines.append(line)
if i % chunk_size == 0:
output_name = f"chunk_{file_number}.txt"
with open(output_name, "w") as out:
out.writelines(current_lines)
current_lines = []
file_number += 1
# write any remaining lines
if current_lines:
output_name = f"chunk_{file_number}.txt"
with open(output_name, "w") as out:
out.writelines(current_lines)
Birden fazla dosyayı tek bir modülde birleştirmek için Python'un glob modülü kullanışlıdır.
import glob
with open("merged_output.txt", "w") as outfile:
for filename in glob.glob("logs/log*"):
with open(filename, "r") as infile:
outfile.write(infile.read())
Burada glob, `log` ile başlayan tüm dosyaları bir `logs/` klasöründe toplar ve içeriklerini tek bir dosyaya ekleyebilirsiniz. Bu, günlük kayıt dosyalarıyla, kısmi verileri dışa aktarırken veya ilgili dosyalarla dolu herhangi bir klasörle çalışırken idealdir.
Araçlarınız entegre edildikten sonra, her türlü rutin görevi otomatikleştirebilirsiniz. Örneğin, haftalık kayıtları aylık kayıtlara birleştirmek, büyük girdi dosyalarını bir betiğe girmeden önce bölmek ve daha fazlası.
Hata yönetimi ve güvenli dosya işlemleri
Pratikte dosyalarla çalışırken, işler her zaman planlandığı gibi gitmez. Dosya işlemleri çeşitli nedenlerle başarısız olabilir. Dosya mevcut olmayabilir veya programınızın dosyayı okuma veya yazma izni olmayabilir. Betik işlem sırasında çökerse, veri bozulması veya dosyaların tamamen yazılmaması riskiyle karşı karşıya kalırsınız.
Daha güvenli dosya girişi/çıkışı için Python'daki hataları işlemek amacıyla try/except bloğunun kullanılması önerilir.
filename = "config.txt"
try:
with open(filename, "r") as f:
data = f.read()
print("File loaded successfully.")
except FileNotFoundError:
print("File not found:", filename)
except PermissionError:
print("You don’t have permission to read this file.")
except Exception as e:
print("Unexpected error:", e)

Bu, eksik dosyalar veya izin sorunları gibi olası sorunları tespit etmenizi sağlar. Karşılaşabileceğiniz bir diğer yaygın sorun da kodlamadır. Bu nedenle, bir dosyanın hangi kodlama türünü kullandığından emin olmadığınızda bunu mutlaka ele alın.
try:
with open("encoding.txt", "r", encoding="utf-8") as f:
content = f.read()
print("File loaded successfully.")
except UnicodeDecodeError:
print("File encoding is not UTF-8. Trying fallback…")
with open("encoding.txt", "r", encoding="latin-1") as f:
content = f.read()
print("Fallback load succeeded:")
print(content)
Metin dosyası yönetiminde ustalaşmak, Python geliştiricilerine projelerinde veri yönetimi ve organizasyonu üzerinde daha fazla kontrol sağlar. Dilin temel araçları, harici kütüphanelere ihtiyaç duymadan çoğu işlem için yeterlidir ve pratikle bu görevler daha hızlı ve kolay hale gelir. Bu teknikleri anlamak, programlama becerilerini geliştirmek ve daha profesyonel projeler oluşturma becerilerini geliştirmek isteyen herkes için önemli bir adımdır.
