Python 将文件与列表进行比较并相应复制

Python 将文件与列表进行比较并相应复制,python,python-3.x,shutil,Python,Python 3.x,Shutil,我有一个脚本,用来比较和排序两个目录中的文件。我目前正在尝试将一个目录中的所有文件与另一个目录中的文件列表进行比较,然后将这些文件复制到“匹配”或“唯一”目录中 我已设法将文件名与列表匹配,然后复制文件,但我无法让它在保留名称的同时将该文件复制到目标目录中 以下是我所拥有的: input2_only = [file1.mp3, file2.mp3, etc] for root, dirs, files in os.walk("input2", topdown=False): for f

我有一个脚本,用来比较和排序两个目录中的文件。我目前正在尝试将一个目录中的所有文件与另一个目录中的文件列表进行比较,然后将这些文件复制到“匹配”或“唯一”目录中

我已设法将文件名与列表匹配,然后复制文件,但我无法让它在保留名称的同时将该文件复制到目标目录中

以下是我所拥有的:

input2_only = [file1.mp3, file2.mp3, etc]

for root, dirs, files in os.walk("input2", topdown=False):
    for filename in files:
        print(filename)
        if filename in input2_only:
            print('yay')
            shutil.copy(os.path.join(root, filename), "outputs")
我认为我可以在shutil系列中做一些改变来实现这一点,但迄今为止我尝试的每一个调整都会导致心痛。需要明确的是,在这段代码中,我希望它将要与列表进行比较的文件复制到一个名为“outputs”的目录中。一旦我能做到这一点,我就有理由相信我能完成剩下的逻辑


谢谢

好的,把这件事弄清楚,然后发布,以防对其他人有所帮助。关键是在调用shutil之前创建输出目标。正确的代码段是:

for root, dirs, files in os.walk("input2", topdown=False):
    for filename in files:
        print(filename)
        if filename in input2_only:
            print('yay')
            out = "outputs/" + filename
            shutil.copy(os.path.join(root, filename), out)

“out”行使shutil输出的目标成为文件夹“outputs”中的文件名。

两个源目录是否平坦,即没有嵌套目录?是。源目录是平面的,输出目录是平面的。