Nasıl bir dosyayı satır satır okumak Python gerekir?
-Tarihi öncesi zamanlarda (Python 1.4) yaptık:
fp = open('filename.txt')
while 1:
line = fp.readline()
if not line:
break
print line
sonra Python:
for line in open('filename.txt').xreadlines():
print line
önce Python uygun yineleyici protokolü 2.3 ve yapabileceği var:
for line in open('filename.txt'):
print line
Bazı örnekler daha ayrıntılı kullanarak gördüm:
with open('filename.txt') as fp:
for line in fp:
print line
bu tercih edilen yöntem ileri gidiyor?
[değiştir] deyimi dosyanın kapanmasını sağlar anlıyorum... ama neden yineleyici dahil değil mi bu dosya nesneleri için protokol?
CEVAP
Tam olarak aşağıdaki tercih olmasının bir nedeni var
with open('filename.txt') as fp:
for line in fp:
print line
CPython nispeten deterministik başvuru sayma düzeni, çöp toplama ile şımarık. Python diğer, varsayımsal uygulamaları mutlaka "yeterince hızlı dosya kapanmaz
Böyle bir uygulama, bir açık kod dosyaları çöp toplayıcısı artık dosya üzerinde sonlandırıcı kolları aramaları daha hızlı açılır eğer" OS hata. dosyaları "çok fazla alabilirsiniz Her zamanki geçici GC hemen tetiklemek için, ama bu kötü bir hack ve ne kadar olmalıherişlev hatası, kütüphaneler de dahil olmak üzere karşılaşma olabilir. Ne bir kabus.
Ya da sadece with
blok kullanabilirsiniz.
Nasıl (şap) Python bir satır kaldırabi...
Nasıl baskı yeni satır veya boşluk olm...
Nasıl bir satır sonu (line devamı) Pyt...
Nasıl hat Java kullanarak büyük metin ...
Ne kadar büyük dosya okumak için pytho...