92 votes

Affectation dans la Boucle While en Python?

Je viens de tomber sur ce morceau de code

while 1:
    line = data.readline()
    if not line:
        break
    #...

et de la pensée, il doit être une meilleure façon de le faire, que d'utiliser une boucle infinie avec l' break.

J'ai donc essayé:

while line = data.readline():
    #...

et, évidemment, eu une erreur.

Est-il possible d'éviter l'utilisation d'un break dans cette situation?

Edit:

Idéalement, vous voulez éviter de dire readline , deux fois... à mon humble avis, la répétition est même pire qu'un break, surtout si l'instruction est complexe.

43voto

Niklas Claesson Points 191

Essayez celui-ci, qui fonctionne pour les fichiers ouverts avec open('filename')

for line in iter(data.readline, b''):

30voto

Ned Batchelder Points 128913

Si vous ne faites pas quelque chose de plus sophistiqué avec des données, comme la lecture des lignes plus tard, il y a toujours:

for line in data:
    ... do stuff ...

20voto

dfb Points 8807

Ce n'est pas beaucoup mieux, mais c'est la façon dont j'ai l'habitude de le faire. Python ne retourne pas la valeur au moment de l'attribution de la variable comme les autres langues (par exemple, Java).

line = data.readline()
while line:
    # ... do stuff ... 
    line = data.readline()

7voto

Kirk Strauser Points 12087

Comme,

for line in data:
    # ...

? Un grand dépend de la sémantique de l' data de l'objet readline sémantique. Si data est file de l'objet, cela fonctionnera.

2voto

dookehster Points 532

Vous pourriez faire:

line = 1
while line:
    line = data.readline()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X