2013-02-18 52 views
17

मेरे पास एक बड़ी टेक्स्ट फ़ाइल (~ 7 जीबी) है। मैं देख रहा हूं कि बड़ी टेक्स्ट फ़ाइल पढ़ने का सबसे तेज़ तरीका मौजूद है या नहीं। प्रक्रिया को गति देने के लिए मैं कई दृष्टिकोणों को पढ़ने के बारे में पढ़ रहा हूं।एक बड़ी टेक्स्ट फ़ाइल (कई जीबी) पढ़ने के लिए पायथन सबसे तेज़ तरीका

उदाहरण effbot में आदेश प्रति सेकंड पाठ की 96,900 लाइनों को संसाधित करने के

# 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** 

सुझाव देते हैं। अन्य authors) islice उपयोग करने के लिए (

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)) फ़ाइल f की अगली n लाइनों की एक सूची प्रदान करेगा सुझाव देते हैं। एक पाश के अंदर इस का उपयोग करके आप n लाइनों

+1

तुम क्यों की जांच नहीं करेगा अपने लिए सबसे तेज़ क्या है? – piokuc

+0

यहां दिए गए सुझावों को देखें: http://stackoverflow.com/questions/14863224/efficient-reading-of-800-gb-xml-file-in-python-2-7 – BenDundee

+0

@Nix मैं पढ़ना नहीं चाहता रेखा से लाइन, लेकिन चंक –

उत्तर

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

स्मृति को समय में एक लाइन पढ़ा जाएगा, और जब किया फ़ाइल को बंद की मात्रा में फ़ाइल दे देंगे ...

+2

मोर्टन लाइन-बाय-लाइन बहुत धीमी हो गई। –

+5

ऐ, बहुत तेज़ी से पढ़ें ... –

+0

ऐसा लगता है कि FileObj के लूप का नतीजा एक एकल चरित्र है, रेखा नहीं। – 69444091