我正在尝试加载两组CSV文件并对两者进行一些计算,例如每组的差异,平均绝对误差set1 - set2exc.
我正在尝试加载这两个集合:
import glob
for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")):
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)
你得到的是ValueError因为你试图为元组分配的项目多于你提供的目标变量的数量.for循环元组解包语法将循环遍历元组中的每个列表,并尝试将元组中的每个值分配给目标(a和b).例如,这可以工作:
for a,b in (['0a.csv', '1a.csv'], ['0b.csv', '1b.csv']):
print a,b
Run Code Online (Sandbox Code Playgroud)
它将每个列表的第一个值a和第二个值分配给b.上面的代码打印:
0a,csv 1a.csv
0b.csv 1b.csv
Run Code Online (Sandbox Code Playgroud)
因此,您得到的是ValueError因为至少有一个glob.glob调用的结果是一个长于两个元素的列表.
根据你想要做的事情,我想你想用zip.
import glob
for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
# whatever
Run Code Online (Sandbox Code Playgroud)
这将采用与您提供的模式匹配的成对文件,并将它们分配给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
Run Code Online (Sandbox Code Playgroud)
结果是
0a.csv 0b.csv
1a.csv 1b.csv
2a.csv 2b.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2731 次 |
| 最近记录: |