Kullanımına Python sıfırlanabilir?
Python yineleyici / jeneratör sıfırlayabilir miyim? Ve dosyanın başlangıcına (csv modülü) sıfırlama ister DictReader kullanıyorum.
CEVAP
Ben birçok cevaplar için docs: önemli bir uyarı göz ardı itertools.tee ama düşündüren bakın
Bu itertool önemli gerektirebilir depolama (bağlı olarak ne kadar yardımcı çok geçici veri olması gerekir saklı). Bir yineleyici genel olarak, daha önce birçok veya tüm verileri kullanır başka bir yineleyici daha hızlı başlar,
tee()
yerinelist()
kullanmak için.
Temelde, tee
İki (veya daha fazla) bir yineleyici klonlar bu durum için tasarlanmıştır, "senkronize" birbirleri ile, gelmeyinçok fazlabunun yerine aynı derler "" (bazı şeyleri geride ya birbirimizi önde). civarı Bu OP sorunu için uygun değildir "baştan yeniden".
DiÄŸer yandan L = list(DictReader(...))
gayet uygun, dicts listesini rahatça belleğe sığabilecek kadar uzun. Yeni bir "yineleyici Başlat" (çok hafif ve düşük genel) yapılabilir herhangi bir zamanda iter(L)
ve kullanılan kısmını ya da tamamını etkileyen olmadan yeni veya mevcut olanları; diğer erişim modelleri de kolayca kullanılabilir.
Bazı cevaplar haklı olarak söylediği gibi, csv
özel durumda da .seek(0)
temel dosya itiraz edebilirsiniz (çok özel bir durum). Emin değilim bu belgelenmiş ve garantili, ama şu anda iş; olur muhtemelen dikkate değer için gerçekten çok büyük csv dosyaları, hangi list
ben recommmend olarak genel yaklaşım olurdu çok büyük bir bellek ayak izi.
Arasındaki fark Python'In Jenerat...
Python kullanımına yer hasNext?...
Verim anahtar kelime Python ne yapar?...
Python bir metaclass nedir?...
Python kullanarak bir dosya var olup o...