从多个文件python中读取行

时间:2016-01-22 00:28:45

标签: 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来执行此操作吗?

2 个答案:

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

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

相关问题