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()
返回此列表,然后将其转换为集合
如果您尝试迭代这些集合,那么每个迭代步骤都会得到一条路径