SORU
19 Temmuz 2012, PERŞEMBE


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
19 Temmuz 2012, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • Shon Gonzales

    Shon Gonzale

    5 EKİM 2014