以下代码工作正常:
def file_gen(f_name):
f = open(f_name)
for line in f:
yield line
gen_line = file_gen("foo.html")
gen_line.next() # '<!DOCTYPE>\n'
gen_line.next() # '<html> \n'
gen_line.next() # ... next line in file
但是这个函数会引发StopIteration
。我不明白为什么?在
^{pr2}$
Tags:
在第二个next()上得到StopIteration,因为您只得到一个结果。你是不是故意要这么做?在
不是吗
只给你一条线让你屈服?因此,迭代在此之后停止。。。在
你有:
注意
line = f.readline()
这只从文件中读取1行。在比较:
^{pr2}$有了这个:
yield
只能用特定对象或表达式调用一次。一旦它被接收器使用,它必须被重新生成。所以你需要一个循环来读取文件的每一行。在您可以通过以下方式使用第二个(可读性较差)表单:
您需要一个循环来创建要生成的项。在第一个例子中,
for line in f: yield line
是一个循环。在我可以这样重写你的函数:
相关问题 更多 >
编程相关推荐