移动文件和目录,即使目标已存在

2 投票
1 回答
11000 浏览
提问于 2025-04-16 17:31

我想把一些文件和文件夹从一个地方复制到另一个地方。用 shutil.move 这个方法很简单,但当目标位置已经有同样的文件或文件夹时,我就遇到问题了。系统给我的错误提示是 Destination path '...' already exists,意思是目标路径已经存在。

我试过用 os.rename,但也没有得到想要的结果。有没有简单的方法可以把文件和文件夹结构复制到另一个地方,即使那些文件和文件夹在目标位置已经存在?

这是我现在的代码:

fileList = os.listdir('/Users/john.leschinski/Desktop/testSrc')  
dest = '/Users/john.leschinski/Desktop/testMove'  
for i in fileList:  
    src = '/Users/john.leschinski/Desktop/testSrc/' + i  
    shutil.move(src,dest)

1 个回答

7

这样怎么样:

def move_over(src_dir, dest_dir):
    fileList = os.listdir(src_dir)
    for i in fileList:
        src = os.path.join(src_dir, i)
        dest = os.path.join(dest_dir, i)
        if os.path.exists(dest):
            if os.path.isdir(dest):
                move_over(src, dest)
                continue
            else:
                os.remove(dest)
        shutil.move(src, dest_dir)

src_dir = '/Users/john.leschinski/Desktop/testSrc'
dest_dir = '/Users/john.leschinski/Desktop/testMove'
move_over(src_dir, dest_dir)

撰写回答