フィルターを介して、多数のファイルから行を返すジェネレーターがあります。次のようになります。
def line_generator(self):
# Find the relevant files
files = self.get_files()
# Read lines
input_object = fileinput.input(files)
for line in input_object:
# Apply filter and yield if it is not *None*
filtered = self.__line_filter(input_object.filename(), line)
if filtered is not None:
yield filtered
input_object.close()
このメソッドself.get_files()
は、ファイル パスのリストまたは空のリストを返します。私はやろうとしましたがs = fileinput.input([])
、次に電話しますs.next()
。これがぶら下がっている場所であり、その理由がわかりません。私はPythonicになろうとしていて、自分ですべてのエラーを処理しているわけではありませんが、これは回避策がないものだと思います. それともありますか?
残念ながら、現時点ではこれを Linux でテストする手段がありませんが、Linux で次のことを試して、得られた結果についてコメントしてもらえますか?
import fileinput
s = fileinput.input([])
s.next()
私はPython 2.7.5(64ビット)でWindowsを使用しています。
全体として、私は本当に知りたいです:
これは Python のバグですか、それとも私が何か間違ったことをしているのですか? .next() は常に何かを返したり、StopIteration
?を上げたりすべきではありません。