Je lis dans un fichier et je me demande s'il y a un moyen de lire la ligne suivante dans une boucle for?
Je lis actuellement le fichier comme ceci:
file = open(input,"r").read()
for line in file.splitlines():
line = doSomething()
Alors, y a-t-il de toute façon que je peux récupérer la ligne suivante du fichier dans cette boucle pour que je puisse effectuer une opération dans la fonction doSomething()
?
Il suffit de parcourir le fichier ouvert:
infile = open(input,"r")
for line in infile:
line = doSomething(line, next(infile))
Étant donné que vous utilisez maintenant le fichier comme itérateur, vous pouvez appeler à tout moment la fonction next()
sur la variable infile
pour récupérer une ligne supplémentaire.
Deux conseils supplémentaires:
N'appelez pas votre variable file
; il masque l'objet de type file
intégré en python. Je l'ai nommé infile
à la place.
Vous pouvez utiliser le fichier ouvert comme gestionnaire de contexte avec l'instruction with
. Il fermera automatiquement le fichier pour vous une fois terminé:
with open(input,"r") as infile:
for line in infile:
line = doSomething(line, next(infile))
file = open(input,"r").read()
lines = file.read().splitlines()
for i in range(len(lines)):
line = lines[i]
next_line = lines[i+1]
Je pense que vous voulez dire que si vous êtes en ligne n, vous voulez pouvoir accéder à la ligne n + 1.
La façon la plus simple de le faire est de remplacer
for line in file.splitlines():
avec
lines = file.readlines()
for i in xrange(len(lines)):
alors vous pouvez obtenir la ligne actuelle avec lines[i]
et la ligne suivante avec lines[i+1]
la manière la plus pythonique est d'utiliser l'énumération
lines = file.readlines()
for index, line in enumerate(lines):
maintenant vous avez la ligne courante dans "ligne" comme d'habitude, mais vous avez aussi l'index si vous voulez trouver une ligne différente par rapport à elle.