2013-02-18 109 views
17

我有一個大的文本文件(〜7 GB)。我正在尋找是否存在讀取大型文本文件的最快方法。我一直在閱讀有關使用幾種方法逐塊閱讀以加快這一過程。Python最快的方式來讀取大文本文件(幾GB)

在示例effbot爲了處理96900行每秒文本的建議

# 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))將返回下一n行文件f的列表。使用這個循環裏面會給你的n

+1

你爲什麼不檢查你自己對你來說最快? – piokuc 2013-02-18 19:54:37

+0

在這裏提出建議:http://stackoverflow.com/questions/14863224/efficient-reading-of-800-gb-xml-file-in-python-2-7 – BenDundee 2013-02-18 19:56:53

+0

@Nix我不想閱讀一行一行,但塊大塊 – 2013-02-18 20:07:25

回答

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

將在時間存儲器中讀取一行,並在完成後關閉該文件塊的文件...

+2

Morten逐行變得太慢了。 – 2013-02-18 20:05:14

+5

aay,讀得太快...... – 2013-02-18 21:27:14

+0

看起來像FileObj循環的結果是單個字符,而不是行。 – 69444091 2017-06-02 01:13:03

相關問題