1

2セットのCSVファイルをロードし、各セットの差、平均絶対誤差を除く両方でいくつかの計算を実行しようとしていますset1 - set2

私は次のように両方のセットをロードしようとしています:

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

そして、私はエラーを受け取ります:

ValueError: too many values to unpack
4

1 に答える 1

6

問題

ValueError指定したターゲット変数の数よりも多くのアイテムをタプルに割り当てようとしているため、 を取得しています。for ループ タプル アンパック構文は、タプル内の各リストをループし、タプル内の各値をターゲット ( aand b) に割り当てようとします。たとえば、これはうまくいきます:

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

a各リストの最初の値をに、2 番目の値をに割り当てますb。上記のコードは以下を出力します。

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

したがって、ValueError少なくとも 1 つのglob.glob呼び出しの結果が 2 つの要素よりも長いリストであるため、 が得られます。

解決策

あなたがやろうとしていることに基づいて、私はあなたが使いたいと思うzip.

import glob

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

これにより、指定したパターンに一致するファイルのペアが取得され、それらが および に割り当てられaますb。たとえば、ファイルが0a.csvある1a.csv場合2a.csv、、、、、、および実行0b.csv1b.csv2b.csv

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

結果は

0a.csv 0b.csv
1a.csv 1b.csv
2a.csv 2b.csv
于 2012-09-25T15:44:02.227 に答える