1

フィルターを介して、多数のファイルから行を返すジェネレーターがあります。次のようになります。

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?を上げたりすべきではありません。

4

2 に答える 2