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

使用os.mkdir创建子文件夹时遭遇FileNotFoundError问题求助

问题分析

报错FileNotFoundError的核心原因有两点:

  • 路径格式错误:Windows系统下的路径缺少盘符前缀(如C:/),当前路径被识别为相对路径,导致系统无法定位到目标目录。
  • 单级目录创建限制:os.mkdir()仅能创建单级目录,若上级目录(比如output)本身不存在,直接创建其子目录会触发找不到路径的错误。
解决方案

1. 修正路径格式

将路径改为Windows系统的绝对路径格式,补充盘符前缀;也可通过os.path模块的方法动态生成路径,避免硬编码带来的兼容性问题。

2. 递归创建目录

用os.makedirs()替换os.mkdir(),并添加exist_ok=True参数——该参数允许目录已存在时不抛出错误,同时会自动创建所有不存在的上级目录。

修改后的代码
import sys
import pickle
import os
import glob
import time
from GenerateEmbeddings import generate_embeddings_narrow, generate_embeddings_wide

# 用os.path.join拼接路径,同时修正盘符问题
base_dir = "C:/Users/mohdm/Desktop/Project"
output_dir = os.path.join(base_dir, "output")
output_path_narrow = os.path.join(output_dir, "dataset-narrow")
output_path_wide = os.path.join(output_dir, "dataset-wide")

# 递归创建目录,避免上级目录不存在或目录已存在的报错
os.makedirs(output_path_narrow, exist_ok=True)
os.makedirs(output_path_wide, exist_ok=True)

input_path_narrow = os.path.join(base_dir, "input", "dataset-narrow")
input_path_wide = os.path.join(base_dir, "input", "dataset-wide")

# 用os.path.join拼接匹配路径,提升跨平台兼容性
dataset_narrow = glob.glob(os.path.join(input_path_narrow, '*.txt'))
dataset_wide = glob.glob(os.path.join(input_path_wide, '*.txt'))

try:
    generate_embeddings_narrow(dataset_narrow, input_path_narrow, output_path_narrow)
    del dataset_narrow

    generate_embeddings_wide(dataset_wide, input_path_wide, output_path_wide)
    del dataset_wide
except Exception as e:
    # 捕获并打印异常,便于排查问题
    print(f"执行出错: {str(e)}")
额外优化建议
  • 始终用os.path.join()拼接路径,避免手动拼接时出现路径分隔符(/或\)的适配问题,让代码支持跨平台运行。
  • 避免使用空except:捕获所有异常,应指定具体异常类型或至少打印错误信息,方便后续定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:23:10