移动和替换相同的文件名是否已经存在?

下面是移动和替换单个文件的代码:

import shutil
import os
src = 'scrFolder'
dst = './dstFolder/'
filelist = []


files = os.listdir( src )
for filename in files:
filelist.append(filename)
fullpath = src + '/' + filename
shutil.move(fullpath, dst)

如果我执行相同的命令和移动文件已经存在于 dst folder,我得到 shutil.Error: Destination path './dstFolder/file.txt' already exists。如何做移动和替换,如果相同的文件名已经存在?

138277 次浏览

如果您指定到目的地的完整路径(而不仅仅是目录) ,那么 shutil.move将覆盖任何现有的文件:

shutil.move(os.path.join(src, filename), os.path.join(dst, filename))

我通过在 move 命令中提供源和目标的完整路径来覆盖它..。 记住为 Windows 路径添加双斜杠。

# this is to change directories (type your own)
os.chdir("C:\REPORTS\DAILY_REPORTS")


# current dir  (to verify)
cwd = os.getcwd()
src = cwd
dst = cwd + '\\XLS_BACKUP\\'


shutil.move(os.path.join(src, file), os.path.join(dst, file))


# nice and short.