以下发电机有什么问题?
for file in file_list:
fh = open(file, 'r')
while True :
yield fh.readline()
fh.close()
答案 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