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)
二、你的代码错误排查及修正
代码存在的问题
os.mkdir()无法创建多级目录:你构建的new_path是两级嵌套目录(Yearx/DOYx/),如果Path_save下没有Yearx目录,os.mkdir()会直接报错,因为它只能创建单级目录,依赖父目录已存在。- 循环仅执行一次:代码末尾的
break语句会让循环只运行一次就终止,无法处理所有目标文件。 - 冗余代码干扰:
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
相关产品推荐
相关产品推荐

