我有一个生成器,它通过过滤器从多个文件中返回行。它看起来像这样:
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()
我在 Windows 上使用 Python 2.7.5(64 位)。
总而言之,我真的很想知道:
这是 Python 中的错误,还是我做错了什么?.next() 不应该总是返回一些东西,或者提出一个StopIteration
?