python docs的iter函数示例:
with open("mydata.txt") as fp:
for line in iter(fp.readline):
print line
给了我这个:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: 'builtin_function_or_method' object is not iterable
怎么可能? (Python 2.6.4)
答案 0 :(得分:4)
这是因为我很蠢,读不懂:
没有第二个参数,o必须是支持迭代协议的集合对象( iter ()方法),或者它必须支持序列协议( getitem ()方法,整数参数从0开始)。如果它不支持这些协议中的任何一个,则引发TypeError。
解决方案是提供一个空字符串sentinel。
with open("mydata.txt") as fp:
for line in iter(fp.readline, ''):
print line
答案 1 :(得分:2)
Python file
对象是可迭代的,因此无需显式调用iter()
。要逐行读取文件,您只需编写:
with open("mydata.txt") as fp:
for line in fp:
print line
答案 2 :(得分:-2)
我唯一能想到的是你没有一个名为mydata.txt的文件,或者它位于错误的位置。