Python使用os模块创建文件夹触发文件写入报错,求替代方案
问题原因说明
你遇到的报错并非os模块本身导致,核心原因是os.chdir("Example_directory/")修改了程序的当前工作目录,后续代码中使用的相对路径File_directory/document.txt会基于切换后的Example_directory路径寻址,而不是你原本的项目根目录,自然找不到对应路径。
修复方案
方案1:不切换工作目录直接创建文件夹
无需调用os.chdir,直接拼接完整的文件夹路径创建即可,不会影响后续相对路径的寻址:
import os # 直接创建目标文件夹,无需切换工作目录 os.mkdir("Example_directory/New_folder_name") # 原有写入代码无需修改即可正常运行 file = open("File_directory/document.txt", "w") file.write("Text sample") file.close()
方案2:切换目录后切回原工作目录
如果业务逻辑确实需要临时切换工作目录,可提前保存初始工作目录,操作完成后切回即可:
import os # 保存初始工作目录 original_cwd = os.getcwd() os.chdir("Example_directory/") os.mkdir("New_folder_name") # 操作完成后切回原目录 os.chdir(original_cwd) # 写入代码正常运行 file = open("File_directory/document.txt", "w") file.write("Text sample") file.close()
方案3:使用pathlib模块操作(推荐)
Python 3.4及以上版本自带pathlib模块,面向对象的路径操作方式更简洁,也无需切换工作目录:
from pathlib import Path # 创建文件夹,exist_ok=True表示文件夹已存在时不会抛出异常 Path("Example_directory/New_folder_name").mkdir(parents=True, exist_ok=True) # 写入文件也可直接调用pathlib的封装方法,无需手动开闭文件 Path("File_directory/document.txt").write_text("Text sample")
注意事项
- 非必要场景不要随意调用
os.chdir修改全局工作目录,极易造成相对路径寻址混乱 - 涉及多层级文件夹创建时,可给
os.makedirs或者Path.mkdir加上parents=True参数,自动创建不存在的父级文件夹
内容的提问来源于stack exchange,提问作者Spiceinajar
相关产品推荐
相关产品推荐

