gpt4 book ai didi

python - 迭代多个生成器(文件句柄)

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:34 25 4
gpt4 key购买 nike

一次从多个文件中读取一行的最佳方法是什么(遍历多个生成器)。

我的尝试:

files = ['a.dat', 'b.dat', 'c.dat']
fHandles = [open(file, 'r') for file in files]
for line in zip(*fHandles):
print line[0]
print line[1]
print line[2]

有更好的方法吗?

(感觉zip(*fHandles)有点搞笑...)

最佳答案

zip 会急切地读取所有文件的全部内容,因此内存效率不高。鉴于每个文件的行数也可能不同,如果您想同时遍历这些行,我建议您使用 itertools.izip_longest

import itertools

files = ['a.dat', 'b.dat', 'c.dat']
handles = [open(file, 'r') for file in files]

for a, b, c in itertools.izip_longest(*handles, fillvalue=''):
print a
print b
print c

此外,不要忘记在完成文件后关闭它们。

for handle in handles:
handle.close()

关于python - 迭代多个生成器(文件句柄),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28513394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com