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

Python创建文件夹方法及代码执行异常排查求助

一、Python中创建文件夹的常用方法
  • 使用os.mkdir():仅能创建单级目录,要求父目录已存在,否则会抛出异常。示例:
    import os
    os.mkdir("single_folder")
    
  • 使用os.makedirs():支持创建多级嵌套目录,父目录不存在时会自动创建。示例:
    import os
    os.makedirs("level1/level2/level3")
    
  • 使用pathlib.Path.mkdir()(Python 3.4+):面向对象的实现方式,同样支持递归创建目录,exist_ok=True参数可避免目录已存在时报错。示例:
    from pathlib import Path
    Path("new_dir/sub_dir").mkdir(parents=True, exist_ok=True)
    
二、你的代码错误排查及修正

代码存在的问题

  1. os.mkdir()无法创建多级目录:你构建的new_path是两级嵌套目录(Yearx/DOYx/),如果Path_save下没有Yearx目录,os.mkdir()会直接报错,因为它只能创建单级目录,依赖父目录已存在。
  2. 循环仅执行一次:代码末尾的break语句会让循环只运行一次就终止,无法处理所有目标文件。
  3. 冗余代码干扰:get_ipython().magic('reset -sf')会清空当前命名空间,可能导致变量意外丢失;os.chdir(Path_th)属于多余操作,因为glob已经使用了完整路径。

修正后的代码

import os
from glob import glob

# 定义基础路径
Path_th = "I:/White_Bubble_2023/COSMIC_Unzipped/"
Path_save = "I:/White_Bubble_2023/COSMIC_Renamed/"

# 获取所有匹配的文件
files = glob(os.path.join(Path_th, "*_nc"), recursive=True)

for file_path in files:
    # 用os.path.join拼接路径,避免手动拼接的分隔符问题
    new_path = os.path.join(Path_save, "Yearx", "DOYx")
    # 用makedirs创建多级目录,exist_ok=True避免重复创建报错
    os.makedirs(new_path, exist_ok=True)
    # 此处可添加文件处理逻辑,比如复制/移动文件到新路径
    # shutil.copy(file_path, new_path)

修正说明

  • 替换os.mkdir()为os.makedirs(),并添加exist_ok=True,确保多级目录能正常创建,且不会因目录已存在抛出异常。
  • 移除break语句,让循环处理所有匹配到的文件。
  • 使用os.path.join()拼接路径,适配不同操作系统的路径分隔符,避免手动拼接出错。
  • 移除无关的库导入和IPython命令,简化代码结构,减少不必要的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:57:26