从目录及其所有子目录中移出所有文件

时间:2019-01-22 18:35:06

标签: python-3.x

我有一个小程序,该程序将所有文件移出目录,然后在所有子目录中搜索其他文件,该文件也会移出。

import shutil
import os
import ctypes   
import sys

copyfrom = r'D:\Downloads\'

copyto = r'D:\Downloads\'

for r, d, f in os.walk(copyfrom):
    for file in f:
        if os.path.join(r, file) == copyto:
            continue
        print(os.path.join(r, file))
        shutil.move(os.path.join(r, file), os.path.join(copyto, file))

它现在可以工作,但是将覆盖每个文件名与现有文件相同的文件。例如,如果我有banana.mp3和banana.jpeg,它将覆盖其中一个文件。相反,我希望将具有现有名称的文件重命名。

1 个答案:

答案 0 :(得分:0)

您可以使用os.path.exists(destination)检查文件是否存在。但是您应该确保不会发生任何竞争情况。因此,您可以使用os.open()之类的命令打开现有文件,执行工作,然后关闭文件。