Python ValueError:太多的值无法用glob解包

Python ValueError:太多的值无法用glob解包,python,python-2.7,Python,Python 2.7,我正在尝试加载两组CSV文件,并对这两组文件进行一些计算,例如每组的差异,平均绝对误差set1-set2exc 我尝试这样加载两组: import glob for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")): 我得到了一个错误: ValueError: too many values to unpack 问题 您得到的是ValueError,因为您试图为元组分配的项目多于您提供的目标变量数量。for loop tuple u

我正在尝试加载两组CSV文件,并对这两组文件进行一些计算,例如每组的差异,平均绝对误差
set1-set2
exc

我尝试这样加载两组:

import glob    
for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")):
我得到了一个错误:

ValueError: too many values to unpack
问题 您得到的是
ValueError
,因为您试图为元组分配的项目多于您提供的目标变量数量。for loop tuple unpacking语法将循环遍历tuple中的每个列表,并尝试将tuple中的每个值分配给目标(
a
b
)。例如,这将起作用:

for a,b in (['0a.csv', '1a.csv'], ['0b.csv', '1b.csv']):
    print a,b
它将每个列表的第一个值分配给
a
,第二个值分配给
b
。上面的代码打印:

0a,csv 1a.csv
0b.csv 1b.csv
因此,您得到的是
ValueError
,因为至少一个
glob.glob
调用的结果是一个长于两个元素的列表

解决办法 基于您正在尝试做的,我认为您希望使用

这将获取与您给出的模式匹配的成对文件,并将它们分配给
a
b
。例如,如果您有文件
0a.csv
1a.csv
2a.csv
0b.csv
1b.csv
,以及
2b.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
问题 您得到的是
ValueError
,因为您试图为元组分配的项目多于您提供的目标变量数量。for loop tuple unpacking语法将循环遍历tuple中的每个列表,并尝试将tuple中的每个值分配给目标(
a
b
)。例如,这将起作用:

for a,b in (['0a.csv', '1a.csv'], ['0b.csv', '1b.csv']):
    print a,b
它将每个列表的第一个值分配给
a
,第二个值分配给
b
。上面的代码打印:

0a,csv 1a.csv
0b.csv 1b.csv
因此,您得到的是
ValueError
,因为至少一个
glob.glob
调用的结果是一个长于两个元素的列表

解决办法 基于您正在尝试做的,我认为您希望使用

这将获取与您给出的模式匹配的成对文件,并将它们分配给
a
b
。例如,如果您有文件
0a.csv
1a.csv
2a.csv
0b.csv
1b.csv
,以及
2b.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

zip解决方案非常有效idk谁投了你的反对票但我投了你的票zip解决方案非常有效idk谁投了你的反对票但我投了你的票