Python的“iter”函数示例给出了TypeError

时间:2010-11-16 12:08:46

标签: python typeerror

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)

3 个答案:

答案 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的文件,或者它位于错误的位置。