Python的"iter"函数示例给我带来了TypeError
在Python文档中,有一个关于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)
3 个回答
-2
我能想到的唯一问题就是你没有一个叫做 mydata.txt 的文件,或者这个文件放错地方了。
2
Python中的file
对象是可迭代的,所以不需要特别调用iter()
。要逐行读取文件,你只需要这样写:
with open("mydata.txt") as fp:
for line in fp:
print line
4
这是因为我太笨了,看不懂:
如果没有第二个参数,o必须是一个支持迭代协议的集合对象(也就是有iter()方法的对象),或者它必须支持序列协议(也就是有getitem()方法,并且可以用从0开始的整数作为参数)。如果它不支持这两种协议,就会出现类型错误(TypeError)。
解决办法是提供一个空字符串作为标记。
with open("mydata.txt") as fp:
for line in iter(fp.readline, ''):
print line