Sto cercando di caricare due serie di file CSV e fare alcuni calcoli su entrambi, come la differenza di ogni set, errore assoluto medio set1 - set2
Ecc.
Sto cercando di caricare entrambi i set in questo modo:
import glob
for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")):
E ottengo l'errore:
ValueError: too many values to unpack
risposte:
6 per risposta № 1Stai ricevendo il ValueError
perché stai cercando di assegnare più oggetti ala tupla rispetto al numero di variabili target fornite. La sintassi del ciclo di disimpilamento tuple per ciclo passerà in rassegna ogni lista della tupla e tenterà di assegnare ciascun valore della tupla ai tuoi obiettivi (a
e b
). Ad esempio, questo funzionerebbe:
for a,b in (["0a.csv", "1a.csv"], ["0b.csv", "1b.csv"]):
print a,b
Assegna il primo valore di ogni lista a a
e il secondo valore a b
. Il codice sopra stampato:
0a,csv 1a.csv
0b.csv 1b.csv
Quindi, stai ricevendo il ValueError
perché i risultati di almeno uno dei tuoi glob.glob
chiamate è una lista più lunga di due elementi.
Una soluzione
Sulla base di quello che stai cercando di fare, penso che tu voglia usare zip
.
import glob
for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
# whatever
Ciò richiederà coppie di file corrispondenti allo schema che hai assegnato e assegnato a loro a
e b
. Ad esempio, se hai dei file 0a.csv
, 1a.csv
, 2a.csv
, 0b.csv
, 1b.csv
, e 2b.csv
fare
for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
print a, b
risultati in
0a.csv 0b.csv
1a.csv 1b.csv
2a.csv 2b.csv