我需要同时处理两个大文件,这意味着它们的行相互对应,我需要过滤两个文件中的一些行。我正在使用以下代码:
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函数如何工作以及如何优雅地同时读取多个大文件?