以下生成器有什么问题?
for file in file_list:
fh = open(file, 'r')
while True :
yield fh.readline()
fh.close()
问题是你永远不会跳出你的无限循环,因为它永远只从一个文件中产生行。
查看fileinput是否存在此类问题。这样做就足够了:
import fileinput
for line in fileinput.input(your_list_of_filenames):
process(line)
process
当然,您必须根据自己的目的定义功能。
尝试这样的事情:
#!/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