Python ValueError:太多值无法解包,解决方案是什么?

Python ValueError:太多值无法解包,解决方案是什么?,python,unpack,Python,Unpack,我得到这个错误,我不知道这意味着什么,我可以让程序打印文件从那里的价值观,但它只是一个长期的不连贯,现在我试图让它打印在一个有组织的庄园,这就是问题产生的地方 import os def listfiles (path): files = [] for dirName, subdirList, fileList in os.walk(path): dir = dirName.replace(path, '') for fname in fileL

我得到这个错误,我不知道这意味着什么,我可以让程序打印文件从那里的价值观,但它只是一个长期的不连贯,现在我试图让它打印在一个有组织的庄园,这就是问题产生的地方

import os 
def listfiles (path):
    files = []
    for dirName, subdirList, fileList in os.walk(path):
        dir = dirName.replace(path, '')
        for fname in fileList:
            files.append(os.path.join(dir, fname))
    return files

a = input('Enter a primary file path: ')
b = input('Enter a secondary file path: ')

x = listfiles(a)
y = llistfiles(b)

files_only_x = set(x) - set (y)
files_only_y = set(y) - set (x)
下一行代码就是python所说的错误所在

for dirName, subdirList, fileList in files_only_x:
    print ('Directory: %s' % dirName)
    for fname in fileList:
        print ('\%s' % fname)

您的
文件\u only\u x
是一组单一值;函数的
listfiles()
返回字符串列表,而不是包含3个值的元组列表:

for fname in files_only_x:
    print ('\\%s' % fname)

您将
文件
构建为字符串列表,因此第二个代码块中的循环是错误的,因为它表明
文件
是三值元组列表。

查看数据流:

使用路径调用
listfiles()
。它在列表中收集该路径下的所有文件

(顺便说一句,IMHO dir=
dirName.replace(路径“”)
是危险的。如果
path
lib/
,并且您遇到一个子路径
lib/misc/collected/lib/which
,会发生什么?虽然这条路径没有多大意义,但它可能已经被创建了……)

listfiles()
返回此列表,然后将其转换为集合

如果您尝试迭代这些集合,那么每个迭代步骤都会得到一条路径