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
相关产品推荐
相关产品推荐

