Skip to main content
 首页 » 编程设计

Python 值错误 : too many values to unpack with glob

2025年05月04日19hnrainll

我正在尝试加载两组 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 循环元组解包语法将遍历元组中的每个列表,并尝试将元组中的每个值分配给目标(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 调用的结果是一个长于两个元素的列表。

解决方案

根据您的尝试,我认为您想使用 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.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