-1

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

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)
4

3 回答 3

1

files_only_x是一组单一的价值观;您的listfiles()函数返回一个字符串列表,而不是具有 3 个值的元组:

for fname in files_only_x:
    print ('\\%s' % fname)
于 2013-11-12T18:40:48.600 回答
1

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

于 2013-11-12T19:15:55.300 回答
0

看数据流:

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

(顺便说一句,恕我直言 dir =dirName.replace(path, '')是危险的。如果pathlib/并且您遇到子路径会发生什么lib/misc/collected/lib/whatever?虽然这条路径男性没有多大意义,但它可能已经创建......)

您从中返回此列表listfiles(),然后将它们转换为集合。

如果您尝试对这些集合进行迭代,则每个迭代步骤都会获得一条路径。

于 2013-11-12T19:23:26.307 回答