You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python创建递增命名子文件夹报FileExistsError[WinError183]求助

问题根因

代码存在3处核心逻辑错误,直接触发FileExistsError:

  • 路径校验对象和实际创建对象不匹配:定义的self.test_folder路径为MAIN/test,但实际创建的是带序号后缀的MAIN/test_1、MAIN/test_2路径。由于代码从未创建过MAIN/test路径,os.path.exists(self.test_folder)的判断结果永远为False,每次运行都会进入if分支重复尝试创建test_1,触发已存在报错。
  • 计数器无状态保留:self.counter初始值固定为1,每次代码启动都会重置,不会记录历史创建的文件夹序号,永远从1开始尝试创建。
  • 缺少递进校验逻辑:即使进入else分支对计数器加1,也未校验新序号对应的文件夹是否存在,只要后续序号的文件夹已被创建,仍会触发相同报错。
修复方案

不需要依赖固定初始值的计数器,从序号1开始遍历,逐个校验对应test_序号路径是否存在,找到第一个未被占用的路径再创建即可。该逻辑不受程序重启影响,可自动顺延序号,不会出现重复创建问题。
修复后的代码片段:

import os

self.MAIN_folder = "MAIN"
# 创建主文件夹,exist_ok=True避免主文件夹已存在时报错
os.makedirs(self.MAIN_folder, exist_ok=True)

# 查找下一个可用的序号
counter = 1
while True:
    test_folder_path = os.path.join(self.MAIN_folder, f"test_{counter}")
    if not os.path.exists(test_folder_path):
        os.makedirs(test_folder_path)
        self.test_folder = test_folder_path
        break
    counter += 1

内容的提问来源于stack exchange,提问作者peru_45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:27:16