2013-02-18 16 views
17

Büyük bir metin dosyasına (~ 7 GB) sahibim. Büyük metin dosyasını okumak için en hızlı yol olup olmadığına bakıyorum. Süreci hızlandırmak için, yığın-yığın-okuma olarak çeşitli yaklaşımları kullanıyorum. Örnek effbot dePython'un büyük bir metin dosyasını (birkaç GB) okuması için en hızlı yolu

saniyede metin 96.900 hatları işlemek üzere

# File: readline-example-3.py 

file = open("sample.txt") 

while 1: 
    lines = file.readlines(100000) 
    if not lines: 
     break 
    for line in lines: 
     pass # do something**strong text** 

göstermektedir. Diğer authors

from itertools import islice 

with open(...) as f: 
    while True: 
     next_n_lines = list(islice(f, n)) 
     if not next_n_lines: 
      break 
     # process next_n_lines 

list(islice(f, n)) dosyanın f sonraki n hatlarının listesini döndürür) (islice kullanmanızı öneririz. bir döngü içinde bu kullanma

+1

Neden kontrol etmeyeceği ... size belleğe defada bir satır okumak ve bittiğinde dosyayı kapanacak – piokuc

+0

Buradaki önerileri burada bulabilirsiniz: http://stackoverflow.com/questions/14863224/efficient-reading-of-800-gb-xml-file-in-python-2-7 – BenDundee

+0

@Nix Okumak istemiyorum satır satır, ancak yığın –

cevap

9
with open(<FILE>) as FileObj: 
    for lines in FileObj: 
     print lines # or do some other thing with the line... 

n hatları

parçaları dosyayı verecek kendiniz için en hızlısı ne?
+2

Morten line-by-line çok yavaşladı. –

+5

aay, çok hızlı oku ... –

+0

FileObj döngüsünün sonucunun satır değil, tek bir karakter olduğu anlaşılıyor. – 69444091

İlgili konular