/ / Python ValueError: zu viele Werte zum Entpacken mit glob - python, python - 2.7

Python ValueError: zu viele Werte zum Entpacken mit glob - python, python-2.7

Ich versuche, zwei Sätze von CSV-Dateien zu laden und einige Berechnungen anzustellen, z set1 - set2 exc.

Ich versuche beide Sets so zu laden:

import glob
for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")):

Und ich bekomme den Fehler:

ValueError: too many values to unpack

Antworten:

6 für die Antwort № 1

Du bekommst das ValueError weil Sie versuchen, mehr Elemente zuzuweisendas Tupel als die Anzahl der Zielvariablen, die Sie angeben. Die for-Loop-Auspacksyntax durchläuft jede Liste in Ihrem Tupel und versucht, jeden Wert im Tupel Ihren Zielen zuzuordnena und b). Das würde zum Beispiel funktionieren:

for a,b in (["0a.csv", "1a.csv"], ["0b.csv", "1b.csv"]):
print a,b

Es weist den ersten Wert jeder Liste zu a und der zweite Wert zu b. Der Code oben druckt:

0a,csv 1a.csv
0b.csv 1b.csv

So bekommen Sie die ValueError denn das ergibt sich aus mindestens einem Ihrer glob.glob Anrufe ist eine Liste, die länger als zwei Elemente ist.

Eine Lösung

Basierend auf dem, was Sie zu tun versuchen, möchte ich Sie verwenden zip.

import glob

for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
# whatever

Dazu werden Paare von Dateien benötigt, die dem von Ihnen angegebenen Muster entsprechen, und weisen sie zu a und b. Zum Beispiel, wenn Sie Dateien haben 0a.csv, 1a.csv, 2a.csv, 0b.csv, 1b.csv, und 2b.csv tun

for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
print a, b

Ergebnisse in

0a.csv 0b.csv
1a.csv 1b.csv
2a.csv 2b.csv