用python读取一个非常大的文件

时间:2011-03-10 16:09:11

标签: python file text

处理大小约为500 MB的文本文件的每一行的最佳解决方案是什么?

我曾经想过的建议:

def files(mon_fichier):
    while True:
        data = mon_fichier.read(1024)
        if not data:
            break
        yield data

fichier = open('tonfichier.txt', 'r')
for bloc in files(fichier):
    print bloc

提前谢谢

4 个答案:

答案 0 :(得分:11)

with open('myfile.txt') as inf:
    for line in inf:
        # do something
        pass

答案 1 :(得分:7)

只要您远离readlines而只使用readline,只需使用标准文件操作即可。

答案 2 :(得分:1)

答案取决于您想要对数据做什么...... 我建议按块阅读,并在读完后阅读每个块:

fs = open(source, 'r')
while 1:
    txt = fs.readline(1000)
    < your treatement>
    if txt =="":
    break
fs.close()

答案 3 :(得分:0)

据我了解这些过程,文件的读取通过缓冲区进行。

在这种情况下,mon_fichier.read(1024)不直接从文件中获取1024个字节,而是从缓冲区获取,直到此文件将耗尽,然后缓冲区将再次填充新的实际读数,例如, 4096或8192或16384或......字节,我不确切知道(认为它是2的幂,但即使不确定)

然后,如果你真的想要处理字节块,我认为philnext的代码更可取。但是如果要获取正好1000个字节,readline(1000)必须替换为read(1000); readline(1000)返回一行,即使该行长度为4个字符,也不会再返回。

按块处理文件可能是你真正想做的事情,但对我来说这似乎并不常见。按行处理文件的频率更高,在这种情况下,Hugh Bothwell的代码是正确的方式。