从多个python文件中读取行

从多个python文件中读取行,python,Python,我有一个文件列表['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来执行此操作 from itertools import zip_longest files = [open(

我有一个文件列表
['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
来执行此操作

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_


如果某些文件耗尽,这将在值之间留下几个空格,因此您可能希望执行比连接更复杂的操作,但这是更简单的部分。

类似的操作可能会奏效。您可以打开所有文件,然后从每个文件中一次读取一行。不清楚当一个文件没有剩余行时(完全停止),您想做什么,继续执行直到所有行都没有剩余行

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()

请记住关闭文件处理程序。

是的,zip是解决此问题的方法。如果文件的长度不相同,你想怎么做?我找不到多个文件(超过2个)使用zip的例子,如果它们的长度不相同,我想让它们以相同的顺序添加仍然存在的行。啊,我想我找到了一种填充它的方法。更新我的答案..“我找不到将zip用于多个文件(超过2个)的示例”-您认为多个文件会有什么不同?另请参阅我最近的答案。我不知道zip。令人惊叹的!啊,谢谢,更正了。我以前也不知道zip_,但一般来说,在itertools中查找迭代问题和函数编程问题的functools都是不错的选择。