-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 に答える
0

データ フローを見てください。

パスで呼び出しlistfiles()ます。リスト内のそのパスの下にあるすべてのファイルを収集します。

(ところで、IMHO dir =dirName.replace(path, '')は危険です。サブ パスに遭遇するとどうなりますpathか?このパスはあまり意味がありませんが、作成された可能性があります...)lib/lib/misc/collected/lib/whatever

からこのリストを返し、listfiles()それらをセットに変換します。

これらのセットを反復しようとすると、反復ステップごとに 1 つのパスが得られます。

于 2013-11-12T19:23:26.307 に答える