Python读取大文本文件

Ken*_* Ma 0 python file-io file

我试图逐行比较两个大文本文件(每个10GB)而不将整个文件加载到内存中.我使用了以下代码,如其他线程所示:

with open(in_file1,"r") as f1, open(in_file2,"r") as f2:
    for (line1, line2) in zip(f1, f2):
        compare(line1, line2)
Run Code Online (Sandbox Code Playgroud)

但似乎python无法逐行读取文件.我观察到运行代码时的内存使用率> 20G.我也试过用:

import fileinput
for (line1, line2) in zip(fileinput.input([in_file1]),fileinput.input([in_file2])):
    compare(line1, line2)
Run Code Online (Sandbox Code Playgroud)

这个也尝试将所有内容加载到内存中.我在Centos 5.9上使用Python 2.7.4,并且我没有在代码中存储任何行.

我的代码出了什么问题?我应该如何更改它以避免将所有内容加载到RAM中?

Tho*_* B. 6

Python的zip函数返回一个元组列表.因此,如果获取完整文件来构建此列表.请改用itertools.izip.它将返回元组的迭代器.

with open(in_file1,"r") as f1, open(in_file2,"r") as f2:
    for (line1, line2) in izip(f1, f2):
        compare(line1, line2)
Run Code Online (Sandbox Code Playgroud)