我有一个文件列表['file_a.txt', 'file_b.txt', 'file_c.txt' ....]
我想从每个文件中读取一行,并通过将它们添加到一起来生成新行。
输出应如下所示:
file_a_line_1 file_b_line_1 file_c_line_1....
file_a_line_2 file_b_line_2 file_c_line_2....
可以使用zip
来执行此操作吗?
答案 0 :(得分:2)
from itertools import zip_longest
files = [open(filename) for filename in file_list]
for lines in zip_longest(*files, fillvalue=''):
print(" ".join(lines))
当文件长度不同时,这也应该有用。如果您使用的是Python 2,我会使用izip_longest。
如果某些文件已耗尽,这将在值之间留下几个空格,因此您可能希望执行比连接更复杂的操作,但这是更容易的部分。
答案 1 :(得分:1)
这样的事可能有用。您将打开所有文件,然后从每个文件中一次读取一行。目前还不清楚当一个文件没有行(完全停止)时你想要做什么,继续前进直到所有行都没有行?
file_list = ['file1', 'file2', 'file3']
fps = []
for fn in file_list:
fps.append(open(fn, 'w'))
curLine = 'start'
while curLine:
curLine = ''
for fp in fps:
myLine = fp.readline()
if myLine:
curLine += myLine + ' '
else:
break #can do what you want when you run out
for fp in fps:
fp.close()
请记得关闭文件处理程序。