如何在Python中从多个文件创建行生成器

时间:2013-09-16 08:50:19

标签: python generator

以下发电机有什么问题?

for file in file_list:
    fh = open(file, 'r')
    while True :
        yield fh.readline()
    fh.close()

2 个答案:

答案 0 :(得分:8)

问题是你永远不会打破你的无限循环,因为它永远只会从一个文件中产生线条。

查看fileinput此类问题。这样就足够了:

import fileinput
for line in fileinput.input(your_list_of_filenames):
    process(line)

当然,您必须根据自己的目的定义process功能。

答案 1 :(得分:3)

尝试这样的事情:

#!/usr/bin/env python

def get_all_lines(file_list):
    for f in file_list:
        with open(f) as fd:
            for line in fd:
                yield line.strip()

for line in get_all_lines(["a", "b"]):
    print line

,其中

$ cat a
a1
a2

$ cat b
b1
b2

输出:

$ ./g.py 
a1
a2
b1
b2