次のジェネレーターの何が問題になっていますか?
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