1

以下生成器有什么问题?

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

2 回答 2

8

问题是你永远不会跳出你的无限循环,因为它永远只从一个文件中产生行。

查看fileinput是否存在此类问题。这样做就足够了:

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

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

于 2013-09-16T08:59:15.907 回答
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
于 2013-09-16T08:59:15.377 回答