Pourquoi ne puis-je pas répéter la boucle 'for' pour csv.Reader?
Je suis un débutant en Python. J'essaie maintenant de comprendre pourquoi la seconde "pour" boucle ne fonctionne pas dans le script suivant. Je veux dire que je n'ai pu obtenir le résultat de la première "pour" en boucle, mais rien à partir de la seconde. J'ai copié et collé mon script et les données csv dans le ci-dessous.
Il sera utile si vous me dites pourquoi il passe de cette manière et de la façon de faire de la seconde "pour" boucle de travailler ainsi.
Mon SCRIPT:
import csv
file = "data.csv"
fh = open(file, 'rb')
read = csv.DictReader(fh)
for e in read:
print(e['a'])
for e in read:
print(e['b'])
des données".csv":
a,b,c
tree,bough,trunk
animal,leg,trunk
fish,fin,body
source d'informationauteur miyazaki_tara
Vous devez vous connecter pour publier un commentaire.
Le csv reader est un itérateur sur le fichier. Une fois que vous allez à travers elle une fois, vous avez lu jusqu'à la fin du fichier, donc il n'y a plus rien à lire. Si vous avez besoin d'aller à travers elle à nouveau, vous pouvez retourner au début du fichier:
Ceci permet de réinitialiser le fichier pour le début de sorte que vous pouvez le lire de nouveau. Selon le code, il peut également être nécessaire d'ignorer le nom de champ d'en-tête:
Cela est nécessaire pour votre code, depuis le
DictReader
consommés en ligne que la première fois pour déterminer les noms des champs, et il ne va pas le faire à nouveau. Il peut ne pas être nécessaire pour d'autres utilisations decsv
.Si le fichier n'est pas trop grand et vous avez besoin de faire plusieurs choses avec les données, vous pourriez tout aussi bien lire le tout dans une liste:
Puis vous pouvez faire ce que vous voulez avec
data
.J'ai créé un petit morceau de la fonction, qui doe prendre le chemin de fichier csv lire et retour liste des dict à la fois, puis vous parcourez la liste très facilement,
Ce qui concerne