J'ai un objet csv DictReader (en utilisant Python 3.1), mais je voudrais savoir le nombre de lignes/lignes contenues dans le lecteur avant Je itérer à travers elle. Quelque chose comme ce qui suit ...Nombre de lignes dans csv.DictReader
myreader = csv.DictReader(open('myFile.csv', newline=''))
totalrows = ?
rowcount = 0
for row in myreader:
rowcount +=1
print("Row %d/%d" % (rowcount,totalrows))
Je sais que je pourrais obtenir le total en parcourant le lecteur, mais je ne pouvais pas courir la boucle « pour ». Je pourrais parcourir une copie du lecteur, mais je ne trouve pas comment copier un itérateur.
Je pourrais aussi utiliser
totalrows = len(open('myFile.csv').readlines())
mais qui semble une réouverture inutile du dossier. Je préférerais obtenir le compte du DictReader si possible.
Toute aide serait appréciée.
Alan
Bonne solution - Je suis assez nouveau à l'idée des itérateurs, donc je n'avais pas vraiment apprécié énumerate() jusqu'à présent. Cordialement. –
Faites juste attention à la taille de vos données ici. Transformer votre lecteur en une liste pourrait prendre des GOBS de la mémoire. –
Cela va charger toutes les données en mémoire, compter les lignes -1 est beaucoup de bonnes solutions –