gpt4 book ai didi

python - shutil.move 如果目录已经存在

转载 作者:行者123 更新时间:2023-11-28 21:41:02 35 4
gpt4 key购买 nike

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

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

这是我的代码

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 的解决方案解决它。

这是解决方案

for pic in glob.iglob(os.path.join(src, "*.jpg")):
if os.path.isfile(pic):
shutil.copy2(pic, dst_pics)
os.remove(pic)

最佳答案

使用复制而不是移动,它应该会自动覆盖文件

shutil.copy(sourcePath, destinationPath)

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

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

检查文件是否存在,使用:

从路径库导入路径
my_file = Path("/path/to/file")

if my_file.exists(): 检查路径中的内容是否存在

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

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

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

或者删除单个文件os.remove(path) 然后一个一个的移动

关于python - shutil.move 如果目录已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134102/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com