L'exemple de Python pour « iter » fonction me donne TypeError
Question
L'exemple de fonction iter python documents :
with open("mydata.txt") as fp:
for line in iter(fp.readline):
print line
me donne ceci:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: 'builtin_function_or_method' object is not iterable
Comment est-ce possible? (Python 2.6.4)
La solution
Il est parce que je suis stupide et ne peut pas lire:
Sans un second argument, o doit être un objet de collection qui prend en charge le protocole d'itération (méthode iter ()), ou il doit prendre en charge le protocole de séquence (la getitem () la méthode avec des arguments entiers commençant à 0). Si elle ne prend pas en charge l'un de ces protocoles, TypeError est élevé.
La solution est de fournir une sentinelle de chaîne vide.
with open("mydata.txt") as fp:
for line in iter(fp.readline, ''):
print line
Autres conseils
file
objets sont itératives, donc il n'y a pas besoin d'appeler explicitement iter()
. Pour lire un fichier ligne par ligne, vous pouvez simplement écrire:
with open("mydata.txt") as fp:
for line in fp:
print line
La seule chose que je peux penser est à ce sujet que vous ne disposez pas d'un fichier appelé mydata.txt ou il est au mauvais endroit.