从多个文件一次读取1行

时间:2015-03-27 14:40:38

标签: python file io

我有一堆文件名。我需要从这些文件中一次读取一行,进行一些处理,然后再从这些文件中读取一行,进行一些处理等等。

我正在寻找有关如何以更加Pythonic方式执行此操作的建议。我知道每个文件中存在的行数,所以我现在很难编码,但我不想这样做。

更新: 这些文件都有相同的行数。

UPDATE2: 至少有30个不同的文件。

filenames = []
line_count = 400
fileobjs = [open(i, 'r') for i in filenames]
for i in xrange(line_count):
    lines = []
    for each_fo in fileobjs:
        for each_line in each_fo:
            lines.append(each_line)
            break
    process(lines)

4 个答案:

答案 0 :(得分:2)

这个怎么样?

from itertools import izip_longest
for file_lines in izip_longest(*map(open,filenames)):
    for line in file_lines:
        if line:
            # process line

答案 1 :(得分:1)

lines = [next(fo) for fo in fileobjs]
process(lines)

答案 2 :(得分:1)

这将一次读取两个文件

 with open('File1','r') as FileA, open('File2','r') as FileB:
     for lineA,lineB in zip(FileA,FileB):
          print lineA,lineB

答案 3 :(得分:1)

filenames = []
files = [open(f, mode='r') for f in filenames]
for line in files[0]:
    lines = [file.readline() for file in files]
    process(lines)