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)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top