Ho un oggetto csv DictReader (utilizzando Python 3.1), ma mi piacerebbe conoscere il numero di righe/righe contenute nel lettore prima di I iterate attraverso di esso. Qualcosa di simile a quanto segue ...Numero di righe in csv.DictReader
myreader = csv.DictReader(open('myFile.csv', newline=''))
totalrows = ?
rowcount = 0
for row in myreader:
rowcount +=1
print("Row %d/%d" % (rowcount,totalrows))
so che potrei ottenere il totale scorrendo il lettore, ma poi non ho potuto correre la 'per' ciclo. Potrei scorrere una copia del lettore, ma non riesco a trovare come copiare un iteratore.
Potrei anche usare
totalrows = len(open('myFile.csv').readlines())
ma che sembra un inutile riapertura del file. Preferirei ottenere il conteggio da DictReader se possibile.
Qualsiasi aiuto sarebbe apprezzato.
Alan
Soluzione piacevole - Sono abbastanza nuovo all'idea degli iteratori, quindi non avevo davvero apprezzato enumerate() fino ad ora. Saluti. –
Basta fare attenzione alle dimensioni del set di dati qui. Trasformare il tuo lettore in un elenco potrebbe richiedere GOBS di memoria. –
Carica tutti i dati in memoria, le linee di conteggio -1 sono soluzioni molto carine –