Python dosya satır satır nasıl okunur? Dosyayı with open() ile açıp for döngüsüyle her satırı sırayla işleyebilirsin. Bu yöntem, dosyanın tamamını tek bir metin olarak almadan satırları okumayı ve her satır üzerinde ayrı işlem yapmayı sağlar.
Dosya okuma örneklerinde r modu okuma işlemini, encoding="utf-8" ise UTF-8 ile kaydedilmiş Türkçe karakterlerin doğru yorumlanmasını sağlar. Temel bilgilerini kontrol etmek için Python bilgi testi ile seviyeni ölçebilirsin.
Python dosyası satır satır nasıl okunur?
open() fonksiyonunun ilk parametresine dosya adını, ikinci parametresine açma modunu yazarsın. r modu dosyayı yalnızca okumak için açar. encoding="utf-8" ifadesi, dosyada Türkçe karakterler bulunduğunda metnin doğru okunmasına yardımcı olur.
Temel satır satır okuma örneği
with open("notlar.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.rstrip("rn"))
Buradaki with bloğu dosyanın yönetilen biçimde kullanılmasını sağlar. Kod bloğu sona erdiğinde dosya otomatik olarak kapatılır. İşlem sırasında bir hata oluşsa bile dosyanın kapanış süreci Python tarafından yönetilir. for line in file ifadesi ise dosyadaki satırları sırayla line değişkenine aktarır.
notlar.txt içinde iki satır bulunduğunu düşünelim:
Python öğreniyorum
Dosya okumayı deniyorum
Beklenen çıktı:
Python öğreniyorum
Dosya okumayı deniyorum
rstrip("rn") satırın sonunda bulunan satır sonu karakterlerini temizler. Temel akışı adım adım tekrar etmek istersen Berk Akademi'nin ücretsiz Sıfırdan Temel Python video eğitimi bu konudaki sözdizimini pekiştirmene yardımcı olabilir.
Satır sonları ve boş satırlar nasıl yönetilir?

Dosyadan okunan line değişkeni çoğu zaman satır sonu karakterini de içerir. Bu nedenle satırın sonunu temizlemeden print(line) kullanırsan çıktıda satırlar arasında beklenmeyen boşluklar oluşabilir. line.rstrip("rn") yalnızca satır sonlarını kaldırır. line.rstrip() ise satır sonuna ek olarak sondaki boşlukları ve sekmeleri de temizler.
Boş satırları korumak istiyorsan temizlediğin satırı doğrudan yazdırabilirsin. Boş satırları atlamak içinse line.strip() sonucunu koşul olarak kullanabilirsin. Bu kontrol, yalnızca boşluk veya sekmeden oluşan satırları da boş kabul eder.
with open("gorevler.txt", "r", encoding="utf-8") as file:
for number, line in enumerate(file, start=1):
line = line.rstrip("rn")
if line.strip():
print(f"{number}. {line}")
Dosyanın üçüncü satırı boşsa çıktı aşağıdaki gibi olur:
1. Python çalış
2. Dosyayı aç
4. Sonucu kontrol et
Burada boş satır yazdırılmadığı için üçüncü numara görünmez. enumerate(file, start=1) dosyadaki gerçek satır numarasını korur.
| İhtiyaç | Uygulama | Sonuç |
|---|---|---|
| Yalnız satır sonunu kaldırmak | line.rstrip("rn") |
Satır içindeki boşluklar korunur |
| Sondaki tüm boşlukları temizlemek | line.rstrip() |
Boşluk ve sekmeler de kaldırılır |
| Boş satırları atlamak | if line.strip(): |
İçeriği olmayan satırlar yazdırılmaz |
| Satır numarası eklemek | enumerate(file, start=1) |
Numaralandırma 1'den başlar |
read(), readlines() ve for döngüsü ne zaman seçilir?

Python dosya okurken seçeceğin yöntem, dosyanın tamamını birlikte mi incelemek istediğine yoksa satırları sırayla mı işlemek istediğine bağlıdır. read() bütün içeriği tek bir metin olarak, readlines() satırları bir liste olarak verir. Dosya nesnesi üzerinde doğrudan for döngüsü kullanmak ise satırları sırayla işlemene yardımcı olur.
| Yöntem | Çıktı biçimi | Ne zaman seçilir? | Bellek yaklaşımı |
|---|---|---|---|
read() |
Tek bir metin | Tüm dosya içeriğini birlikte incelemek, aramak veya başka bir işleme aktarmak istediğinde | Dosyanın tamamını tek bir metin olarak toplar |
readlines() |
Metinlerden oluşan liste | Satırlara sıra numarasıyla erişmek, satırları tekrar kullanmak veya indekslemek istediğinde | Tüm satırları bir liste içinde toplar |
for döngüsü |
Her turda bir satır | Satırları sırayla filtrelemek, dönüştürmek, yazdırmak veya işlemek istediğinde | Satırları ayrıca bir listeye toplamadan ilerler |
Karar vermek için şu çerçeveyi kullanabilirsin:
- Dosyanın tamamını tek parça olarak ele alacaksan
read()kullan. - Satırları liste olarak saklaman veya belirli bir satıra indeksle ulaşman gerekiyorsa
readlines()seç. - Her satır üzerinde ayrı işlem yapacaksan doğrudan
fordöngüsünü tercih et.
Görevleri boş satırları atlayarak nasıl numaralandırırsın?
Bir görev dosyasındaki boş satırları numaralandırmaya katmamak için önce satırın kenarlarındaki boşlukları strip() ile temizleyebilir, ardından metin boşsa continue ile o satırı atlayabilirsin. Numara artırma işlemini yalnızca geçerli bir görev yazdırıldıktan sonra yapmak, sıra numaralarının kesintisiz ilerlemesini sağlar.
gorevler.txt içeriği:
Python değişkenlerini tekrar et
Dosya okuma örneği yaz
Kodu çalıştır ve sonucu kontrol et
with open("gorevler.txt", "r", encoding="utf-8") as dosya:
sira = 1
for satir in dosya:
gorev = satir.strip()
if not gorev:
continue
print(f"{sira}. {gorev}")
sira += 1
Beklenen çıktı:
1. Python değişkenlerini tekrar et
2. Dosya okuma örneği yaz
3. Kodu çalıştır ve sonucu kontrol et
Burada strip() sonucunda boş metne dönüşen satırlar atlanır. sira değişkeni yalnızca görev yazdırıldıktan sonra artırıldığı için boş satırlar numara aralığı oluşturmaz. Bu ayrımı küçük alıştırmalarla pekiştirmek için Python bilgi testini çözebilirsin.
FileNotFoundError için hangi sırayla kontrol yapılır?
FileNotFoundError, Python’un açmaya çalıştığı dosyayı belirtilen yol üzerinde bulamadığını gösterir. Çözüm için yolu rastgele değiştirmek yerine şu sırayı izle: çalışma konumu, dosya adı ve uzantı, klasör yolu.
Üç adımlı teşhis sırası
- Çalışma konumunu kontrol et:
Path.cwd()ile programın hangi klasörden çalıştığını gör. Göreliveriler/gorevler.txtyolu bu klasöre göre aranır. - Dosya adı ve uzantısını kontrol et: Harfleri, boşlukları ve
.txtuzantısını dosya adıyla aynı yaz. Bazı dosya sistemlerinde büyük ve küçük harf farkı önemlidir. - Klasör yolunu kontrol et:
verilerklasörünün çalışma konumunun içinde bulunduğundan emin ol. Dosya başka bir klasördeyse göreli yolu buna göre düzenle.
| Kontrol | Sorulacak soru |
|---|---|
| Çalışma konumu | Python hangi klasörde çalışıyor? |
| Dosya adı | Ad ve uzantı birebir aynı mı? |
| Klasör yolu | Dosya belirtilen klasörün içinde mi? |
Aşağıdaki örnek, çalışma konumunu ve kontrol edilen yolu gösterir:
from pathlib import Path
dosya_yolu = Path("veriler") / "gorevler.txt"
print("Çalışma konumu:", Path.cwd())
print("Kontrol edilen yol:", Path.cwd() / dosya_yolu)
try:
with dosya_yolu.open("r", encoding="utf-8") as dosya:
print(dosya.readline().rstrip())
except FileNotFoundError:
print("Dosya bulunamadı. Klasör, ad ve uzantıyı kontrol et.")
Dosya bulunamadığında son satır şu şekilde görünür:
Dosya bulunamadı. Klasör, ad ve uzantıyı kontrol et.
Bu sırayı izlediğinde önce ortamı, sonra dosya adını, en son klasör yolunu düzelterek hatanın kaynağını daha hızlı ayırt edebilirsin.