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

Python脚本跨目录运行遇FileNotFound问题,如何实现健壮路径引用?

解决脚本路径引用的健壮性问题

问题根源在于你用的是相对当前工作目录的路径,而非脚本自身所在目录的路径:

  • 直接在控制台运行python script.py时,当前工作目录就是脚本所在目录,因此能找到Pickles文件夹;
  • 用IPython的%run从其他目录执行时,当前工作目录是IPython启动的目录,自然找不到脚本所在目录下的Pickles。

不用绝对路径的话,有两种实用方案:

方法一:用os.path模块(兼容所有Python版本)

通过__file__变量获取脚本的绝对路径,再拼接出Pickles文件夹的路径:

import os
import pickle
from datetime import date

# 获取脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接目标文件路径(os.path.join自动适配系统路径分隔符)
pickle_file = os.path.join(script_dir, 'Pickles', f'{name}_{date.strftime("%y-%b-%d")}')

with open(pickle_file, 'rb') as f:
    obj = pickle.load(f)

方法二:用pathlib模块(Python 3.4+推荐)

pathlib是Python 3.4新增的面向对象路径处理模块,写法更简洁直观:

from pathlib import Path
import pickle
from datetime import date

# 获取脚本所在目录的Path对象,resolve()确保是绝对路径
script_dir = Path(__file__).parent.resolve()
# 用/运算符拼接路径,自动适配Windows/Linux的路径分隔符
pickle_file = script_dir / 'Pickles' / f'{name}_{date.strftime("%y-%b-%d")}'

with open(pickle_file, 'rb') as f:
    obj = pickle.load(f)

这两种方法都能保证脚本不管从哪个目录运行,都会从自身所在目录去找Pickles文件夹,彻底解决路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:20:56