首页 > 解决方案 > 尝试获取多个目录的值时出现太多值无法解包(预期为 2)错误

问题描述

我必须同时访问 2 个目录并且必须使用这些文件,例如 - 如果我使用第一个目录中的第一个文件,那么我必须使用第二个目录中的第一个文件,依此类推。但是当我的代码是:

for n, id_ in tqdm(enumerate(train_ids), total=len(train_ids)):
    path = TRAIN_PATH +'\\'+ id_
    path_image = path + '\\images\\'
    path_mask = path + '\\masks\\'
    for image_file, mask_file in os.listdir(path_image), os.listdir(path_mask):
        print(path_image+image_file)
        print(path_mask+mask_file)

ValueError                                Traceback (most recent call last)
<ipython-input-22-b54928a597d2> in <module>
      3     path_image = path + '\\images\\'
      4     path_mask = path + '\\masks\\'
----> 5     for image_file, mask_file in os.listdir(path_image), os.listdir(path_mask):
      6         print(path_image+image_file)
      7         print(path_mask+mask_file)

ValueError: too many values to unpack (expected 2)

标签: pythonpython-3.x

解决方案


您可以使用该zip功能解决此类问题

改变

for image_file, mask_file in os.listdir(path_image), os.listdir(path_mask):

进入:

for image_file, mask_file in zip(os.listdir(path_image), os.listdir(path_mask)):

解释:

zip接受两个迭代(或更多)并将它们作为一个:

假设我们有列表lk

k = [1,2,3]
l = [4,5,6]
zip(l, k) # [(1,4), (2,5), (3,6)]

推荐阅读