首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果目录已经存在,则为shutil.move

如果目录已经存在,则为shutil.move
EN

Stack Overflow用户
提问于 2017-07-16 23:08:21
回答 2查看 27.3K关注 0票数 11

我有一个代码,用于将所有jpg文件从源移动到目的地。当代码第一次运行良好并移动文件时,如果我再次运行它,它会给出一个错误,即该文件已经存在。

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/Users/tom/Downloads/direc.py", line 16, in <module>
    shutil.move(jpg, dst_pics)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/shutil.py", line 542, in move
    raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path '/Users/tom/Downloads/Dest/Pictures/Photo3.jpg' already exists

这是我的密码

代码语言:javascript
运行
复制
import os
import glob
import shutil

local_src = '/Users/tom/Downloads/'
destination = 'Dest'

src = local_src + destination
dst_pics = src + '/Pictures/'

print(dst_pics)

for pic in glob.iglob(os.path.join(src, "*.jpg")):
    if os.path.isfile(pic):
        if not (os.path.isfile(dst_pics + pic)):
            shutil.move(pic, dst_pics)
        else:
            print("File exists")

有什么我可以做的,以便它可以覆盖文件或检查文件是否存在并跳过它?

我能够通过@Justas G解决方案来解决这个问题。

这里是解决方案

代码语言:javascript
运行
复制
for pic in glob.iglob(os.path.join(src, "*.jpg")):
    if os.path.isfile(pic):
        shutil.copy2(pic, dst_pics)
        os.remove(pic)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-16 23:38:28

使用移动的副本,它应该自动覆盖文件。

shutil.copy(sourcePath, destinationPath)

当然,你需要删除原始文件。请注意,shutil.copy不复制或创建目录,因此需要确保它们的存在。

如果这也不起作用,您可以手动检查文件是否存在,删除它并移动新文件:

若要检查该文件是否存在,请使用:

from pathlib import Path my_file = Path("/path/to/file")

if my_file.exists():检查路径上是否存在某些东西

if my_file.is_dir():检查目录是否存在

if my_file.is_file():检查文件是否存在

要删除目录及其所有内容,请使用:shutil.rmtree(path)

或使用os.remove(path)删除单个文件,然后逐个移动它们。

票数 16
EN

Stack Overflow用户

发布于 2020-12-03 02:06:31

除了上面的代码之外,我将文件夹移动到已经存在的目录中,这种冲突将产生一个错误,因此我建议使用shutil.copytree()

代码语言:javascript
运行
复制
shutil.copytree('path_to/start/folder', 'path_to/destination/folder', dirs_exist_ok=True) 

dirs_exist_ok=True必须允许覆盖文件,否则会出现错误。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45134102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档