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

在Python中创建目录子文件夹时出现错误(附相关代码)

排查并解决Python目录创建的问题

嘿,我帮你梳理下代码里的几个关键问题,逐个解决:

1. 路径转义踩坑(最容易触发报错的点)

你写的路径用了\,但在Python字符串里\是转义字符,比如\T会被解析成制表符,导致系统识别不出正确的路径,这绝对是常见的入门坑!解决方法超简单,二选一就行:

  • 用原始字符串:在路径前面加个r,比如r'I:\DATA\Train'和r'C:\DATA',这样Python就不会把反斜杠当成转义符了
  • 直接用正斜杠代替反斜杠:'I:/DATA/Train',Windows系统完全支持这种写法

2. 第一个代码块:创建文件夹的逻辑跑偏了

你当前的代码是遍历I:\DATA\Train下的所有文件,去掉扩展名后,在你运行脚本的当前工作目录创建同名文件夹——这大概率不是你想要的效果吧?而且如果不同子目录下有同名文件,还会重复创建(虽然exist_ok=True不会报错,但逻辑会乱)。

假设你的需求是在每个文件所在的目录下,创建一个和文件名(不含扩展名)同名的子文件夹,我帮你改好了代码:

import os

# 遍历目标目录及其所有子目录
for folderName, subfolders, filenames in os.walk(r'I:\DATA\Train'):
    print(f'The current folder is {folderName}')
    for filename in filenames:
        # 提取文件名(去掉扩展名)
        file_prefix = os.path.splitext(filename)[0]
        # 拼接要创建的文件夹路径:文件所在目录 + 文件名前缀
        target_folder = os.path.join(folderName, file_prefix)
        # 创建文件夹(如果已经存在就跳过,不会报错)
        os.makedirs(target_folder, exist_ok=True)
        print(f'Created folder: {target_folder}')
    print('')

要是你的需求是在某个固定目录下,为所有文件创建同名文件夹,那只要指定一个固定的根目录就行,比如:

import os

# 先指定你要创建文件夹的根目录
root_target = r'C:\Your\Target\Directory'
os.makedirs(root_target, exist_ok=True)

for folderName, subfolders, filenames in os.walk(r'I:\DATA\Train'):
    print(f'The current folder is {folderName}')
    for filename in filenames:
        file_prefix = os.path.splitext(filename)[0]
        target_folder = os.path.join(root_target, file_prefix)
        os.makedirs(target_folder, exist_ok=True)
        print(f'Created folder: {target_folder}')
    print('')

3. 第二个代码块:子文件夹创建的代码没写完呀

你当前的代码只是遍历并打印C:\DATA的子文件夹,但完全没有创建逻辑。如果你的需求是把I:\DATA\Train的子文件夹结构复制到C:\DATA,可以用下面的代码:

import os

source_path = r'I:\DATA\Train'
target_path = r'C:\DATA'

for folderName, subfolders, filenames in os.walk(source_path):
    # 计算原目录的相对路径,用来在目标目录重建相同的结构
    relative_path = os.path.relpath(folderName, source_path)
    target_folder = os.path.join(target_path, relative_path)
    os.makedirs(target_folder, exist_ok=True)
    print(f'Created folder structure: {target_folder}')

最后说下常见报错的对应解决

  • 要是遇到FileNotFoundError:90%是路径转义的问题,换成原始字符串或正斜杠就搞定
  • 要是遇到PermissionError:检查下目标路径你有没有读写权限,或者右键以管理员身份运行脚本
  • 要是遇到FileExistsError:记得给os.makedirs加上exist_ok=True参数,重复创建也不会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:36:34