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

use*_*861 2 python text file

处理大小约为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
Run Code Online (Sandbox Code Playgroud)

先感谢您

Hug*_*ell 11

with open('myfile.txt') as inf:
    for line in inf:
        # do something
        pass
Run Code Online (Sandbox Code Playgroud)

  • @eyquem:问题不是"按块读取文件"; 问题是关于大文本文件的"处理每一行的最佳解决方案".一般来说,不要担心逐块读取; 顺序磁盘缓存将为您处理它. (3认同)
  • @ user653861:您的选项受文件中数据结构的约束.文本行:在f:`中使用`for line.1024字节的二进制数据块:循环遍历`f.read(1024)`.XML文档:使用带有`iterparse`或SAX解析器的ElementTree实现.等等.这些方法都不会导致MemoryError.您可以通过在代码中累积大型数据结构来导致内存错误.你说你想要处理每一行,但你不断提到"块" - 请下定决心. (2认同)

fil*_*mor 7

只要你远离readlines而只是使用标准文件操作就应该工作readline.