如何同时迭代两个文件的行?

2024-05-23 21:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,我想对这两个文件执行一些行操作。(换句话说,每个文件的第一行对应,第二行也对应,等等)现在,我可以想到一些稍微麻烦的方法来同时遍历两个文件;但是,这是Python,所以我认为有一些语法上的速记。

换句话说,有什么简单的方法来适应

for line in file:

所以它同时从两个文件中提取数据?


Tags: 文件数据方法inforline语法file
3条回答

你可以试试

for line1, line2 in zip(file1, file2):
    #do stuff

不过,请注意,当较短的文件结束时,此循环将退出。

使用Python 2时,itertools.izip更适合这种情况,因为它不创建list

后人的一个完整例子:

from itertools import izip, izip_longest

file1name = '/some/path/and/file'
file2name = '/another/path/and/another/file'

with open(file1name) as file1, open(file2name) as file2:
    for line1, line2 in izip(file1, file2):   # or izip_longest
        # do something with the lines

使用with确保文件在使用后被清除,即使发生异常。

Python2:

使用itertools.izip连接两个迭代器。

from itertools import izip
for line_from_file_1, line_from_file_2 in izip(open(file_1), open(file_2)):

如果文件长度不等,请使用izip_longest

在Python 3中,改用zipzip_longest。另外,使用with打开文件,这样即使出现错误也会自动处理关闭操作。

with open(file1name) as file1, open(file2name) as file2:
    for line1, line2 in zip(file1, file2):
        #do stuff

相关问题 更多 >