我有代码来复制具有与csv列表中in相匹配的名称的文件夹,它一直在很好地复制所有文件夹,直到找到一个名称已经存在于目标文件夹中的文件夹。我相信这个问题来自于下面的代码部分,因为我认为如果if函数发现文件夹名与目标文件夹中的文件夹完全匹配,它应该允许shutil.copytree跳过。
save_path = r""
for i, r in df.iterrows():
date = r["Date"]
ID = r["ID"]
survey_paths = findSurveys(path = SourcePath, survey_id = ID)
for path in survey_paths:
temp = path.split("\\")
save_date = temp[-2]
save_id = temp[-1]
#compare if the path of previously saved survey equals the new one
if save_path != rf"{DstPath}\{save_date}\{save_id}":
shutil.copytree(path,rf"{DstPath}\{save_date}\{save_id}")
save_path = rf'{DstPath}\{save_date}\{save_id}'
print(save_path.split("\\")[-1]+ " ("+ save_path.split("\\")[-2]+ ")"" copied!")以下是我遇到的错误:
Traceback (most recent call last):
File "Z:\Python\DCPA\FolderCopy\FolderCopy.py", line 34, in <module>
shutil.copytree(path,rf"{DstPath}\{save_date}\{save_id}")
File "Z:\Apps\Anaconda3\lib\shutil.py", line 565, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "Z:\Apps\Anaconda3\lib\shutil.py", line 466, in _copytree
os.makedirs(dst, exist_ok=dirs_exist_ok)
File "Z:\Apps\Anaconda3\lib\os.py", line 225, in makedirs
mkdir(name, mode)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'Y:\\P43_NEW\\2022-02-21\\112_1'发布于 2022-06-22 02:13:52
您可能只检查最后保存的路径!
在尝试保存之前,我会使用os包检查目录是否存在。
下面是我所发生的事情的一个快速片段(未经测试)。
import os
if not os.path.isdir(r"path/to/folder"):
save_path = (r"path/to/folder")这里有一个快速链接,让您开始修复,如果您需要寻找更多的解决方案,当涉及到文件内容。另一种选择是将当前时间附加到文件夹的末尾,这样每次创建的每个文件夹都是唯一的。
from datetime import datetime
# earlier creation of the save path
save_path = save_path + datetime.now().strftime("%H%M%S"),发布于 2022-06-22 04:28:22
你可以试一试,但如果。
try:
shutil.copytree(path,rf"{DstPath}\{save_date}\{save_id}")
save_path = rf'{DstPath}\{save_date}\{save_id}'
print(save_path.split("\\")[-1]+ " ("+ save_path.split("\\")[-2]+ ")"" copied!")
except FileExistsError:
passhttps://stackoverflow.com/questions/72708867
复制相似问题