Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在python中不能使用zip函数同时读取大文件?_Python - Fatal编程技术网

为什么在python中不能使用zip函数同时读取大文件?

为什么在python中不能使用zip函数同时读取大文件?,python,Python,我需要同时处理两个大文件,这意味着它们的行彼此对应,我需要过滤两个文件中的一些行。我正在使用以下代码: with open(path1, "r") as fq, \ open(path2, "r") as ft, \ open(path3 + ".filter", "w") as wtq, \ open(path4 + ".filter", "w") as wtt: for q, t in zip(fq, ft):

我需要同时处理两个大文件,这意味着它们的行彼此对应,我需要过滤两个文件中的一些行。我正在使用以下代码:

    with open(path1, "r") as fq, \
        open(path2, "r") as ft, \
        open(path3 + ".filter", "w") as wtq, \
        open(path4 + ".filter", "w") as wtt:
    for q, t in zip(fq, ft):
        q, t = q.strip().split(), t.strip().split()
        ...
        wtq.write(" ".join(q) + "\n")
        wtt.write(" ".join(t) + "\n")
但是内存使用量会逐渐增加,直到程序被终止

当我将其更改为以下内容时,一切正常:

   for q in fq:
        t = ft.readline()
         ...

zip函数如何工作以及如何优雅地同时读取多个大文件?

zip()
在Python2中创建了一个列表,因此整个内容在内存中读取,然后由循环遍历。尝试使用
izip()
从itertools模块导入izip。谢谢!我以前使用python3和zip来同时读取只有小数据的文件。今天我遇到了这个麻烦。在Python2中,
zip
构建了一个列表和
izip
一个迭代器。在Python3中,
izip
消失了,
zip
构建了一个迭代器(与
map
imap
相同,
range
xrange
)。
zip()
在Python2中创建了一个列表,因此整个内容都在内存中读取,然后由循环遍历。尝试使用
izip()
从itertools模块导入izip。谢谢!我以前使用python3和zip来同时读取只有小数据的文件。今天我遇到了这个麻烦。在Python2中,
zip
构建了一个列表和
izip
一个迭代器。在Python3中,
izip
消失,而
zip
构建了一个迭代器(与
map
imap
range
xrange
相同)。