Selamlar sevgili üstatlar,
fihrist.txt adlı bir metin belgemiz var diyelim, içerisinde de 3 satırlık bir yazı olduğunu varsayın.
Şu aşağıda verdiğim kod doğru şekilde çalışırken ;
fihrist = open("fihrist.txt", "r", encoding="utf-8")
satirSayisi = 0
while satirSayisi < 3:
print(fihrist.readline())
satirSayisi += 1
fihrist.close()
Bu aşağıdaki neden çalışmıyor ?
fihrist = open("fihrist.txt", "r", encoding="utf-8")
satirSayisi = 0
while satirSayisi < len(fihrist.readlines()):
print(fihrist.readline())
satirSayisi += 1
fihrist.close()
Ayrıca 1. (çalışan) yönteme istinaden şöyle bir yolda izledim sonuç yine aynı
fihrist = open("fihrist.txt", "r", encoding="utf-8")
satirlar = len(fihrist.readlines())
satirSayisi = 0
while satirSayisi < satirlar:
print(fihrist.readline())
satirSayisi += 1
fihrist.close()
Dosyanın içeriğini yazmıyor, hata yaptığm ne var :S
Merhaba,
Dosyayı açtıktan sonra readlines
fonksiyonunu çağırırsanız, dosya tamamen okunmuş olur ve geriye okunacak bir şey kalmaz. Yani readlines
fonksiyonunu bir kez çağırdıktan sonra readline
fonksiyonunu çağırmak boş bir string almanızı sağlar. seek
metodunu da inceleyin isterseniz.
1 Beğeni
readlines fihrist.txt dosyasindaki her satiri ayirip listede tutar. Dosya okuma islemlerinde bir kez okunan islemi tekrar okumaz. Yani diyelim fihrist.txt dosyasinda 3 satirlik karakter dizisi bulunsun.
Bu kod calistiginde dongude ilk kez len uzunlugu olarak 3 degerini verir. İkinci donuste ise sifir degerini verir, satirSayisi degiskeni 1 degerini aldigindan ve kosula uymadıgından while dongusunden cikilmis olur.
fihrist = open("fihrist.txt", "r", encoding="utf-8")
satirlar = len(fihrist.readlines())
satirSayisi = 0
while satirSayisi < satirlar:
print(fihrist.readline())
satirSayisi += 1
fihrist.close()
Bu kısımda da aynı durum geçerli. 2. satirda sen tüm satirları okursan dosyanin icerigi bos kalir bu yüzden bos satır donderir.
1 Beğeni
Değerli yanıtlarınız için çok çok teşekkür ederim tamamdır şimdi çok daha iyi anladım