/ / Python ValueError: troppi valori da decomprimere con glob - python, python-2.7

Python ValueError: troppi valori da decomprimere con glob - python, python-2.7

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 № 1

Stai 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