首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shutil.copytree复制已经存在的文件夹

使用shutil.copytree复制已经存在的文件夹
EN

Stack Overflow用户
提问于 2022-06-22 01:53:35
回答 2查看 508关注 0票数 1

我有代码来复制具有与csv列表中in相匹配的名称的文件夹,它一直在很好地复制所有文件夹,直到找到一个名称已经存在于目标文件夹中的文件夹。我相信这个问题来自于下面的代码部分,因为我认为如果if函数发现文件夹名与目标文件夹中的文件夹完全匹配,它应该允许shutil.copytree跳过。

代码语言:javascript
复制
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!")

以下是我遇到的错误:

代码语言:javascript
复制
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'
EN

回答 2

Stack Overflow用户

发布于 2022-06-22 02:13:52

您可能只检查最后保存的路径!

在尝试保存之前,我会使用os包检查目录是否存在。

下面是我所发生的事情的一个快速片段(未经测试)。

代码语言:javascript
复制
import os

if not os.path.isdir(r"path/to/folder"):
    save_path = (r"path/to/folder")

这里有一个快速链接,让您开始修复,如果您需要寻找更多的解决方案,当涉及到文件内容。另一种选择是将当前时间附加到文件夹的末尾,这样每次创建的每个文件夹都是唯一的。

代码语言:javascript
复制
from datetime import datetime

# earlier creation of the save path
save_path = save_path + datetime.now().strftime("%H%M%S"),

Python:检查文件或目录是否存在

票数 0
EN

Stack Overflow用户

发布于 2022-06-22 04:28:22

你可以试一试,但如果。

代码语言:javascript
复制
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:
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72708867

复制
相关文章

相似问题

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