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

使用os.chdir创建文件夹后,文件读取路径异常的问题求助

解决os.chdir切换目录导致文件读取失败的问题

问题原因

os.chdir()会全局修改程序的当前工作目录,你调用它切换到saved_data后,后续所有相对路径都会基于这个新目录解析。你的read_txt_file函数用'text/' + str(destination) + '.txt'这种相对路径,程序会去saved_data/text下找文件,但实际text文件夹在项目根目录,所以触发找不到文件的错误。

推荐方案:不使用os.chdir,直接创建目标文件夹

直接拼接目标文件夹的路径,不需要切换工作目录,这样不会影响其他功能的路径解析:

import os

def create_world():
    # 拼接saved_data/world2的完整路径
    target_folder = os.path.join('saved_data', 'world2')
    # exist_ok=True避免文件夹已存在时抛出异常
    os.makedirs(target_folder, exist_ok=True)

备选方案:临时切换目录后恢复原目录

如果一定要用os.chdir,记得先保存原工作目录,操作完成后切回去,保证后续函数的工作目录不受影响:

def create_world():
    # 保存当前工作目录
    original_dir = os.getcwd()
    try:
        os.chdir('saved_data')
        os.makedirs('world2', exist_ok=True)
    finally:
        # 无论操作成功或失败,都切回原目录
        os.chdir(original_dir)

额外优化:让文件读取函数更稳定

可以让read_txt_file基于项目根目录生成绝对路径,彻底避免相对路径的依赖问题:

def read_txt_file(destination, line1):
    # 获取当前脚本所在的项目根目录绝对路径
    root_path = os.path.dirname(os.path.abspath(__file__))
    # 拼接text文件夹和目标文件的完整路径
    file_path = os.path.join(root_path, 'text', f'{destination}.txt')
    # 用with语句自动管理文件资源,避免忘记关闭文件
    with open(file_path, 'r') as file:
        lines = [line.strip() for line in file]
        return lines[line1 - 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:35:26