如何让Python脚本按自身所在路径加载关联文件?
解决脚本按自身路径查找关联文件的问题
不需要切换当前工作目录,直接修改run.py,让它基于自身所在路径定位config.txt即可,以下是两种可靠实现方式:
方法1:使用os.path模块(兼容所有Python版本)
把run.py中打开config.txt的代码替换为:
import os # 获取脚本自身的绝对路径 script_path = os.path.abspath(__file__) # 提取脚本所在目录 script_dir = os.path.dirname(script_path) # 拼接config.txt的绝对路径 config_path = os.path.join(script_dir, "config.txt") # 打开目标文件 with open(config_path) as f: # 后续文件操作 pass
方法2:使用pathlib模块(Python 3.4+推荐)
如果你的Python版本在3.4及以上,用pathlib会更简洁直观:
from pathlib import Path # 获取脚本所在目录的绝对路径 script_dir = Path(__file__).parent.resolve() # 拼接config.txt路径 config_path = script_dir / "config.txt" # 打开目标文件 with open(config_path) as f: # 后续文件操作 pass
原理说明
__file__变量会存储当前脚本的路径(即使通过exec(open(file).read())执行,它指向的依然是E:/myscripts/run.py)- 通过
os.path.dirname()或Path.parent提取脚本所在目录后,再拼接config.txt的路径,就能让脚本无视当前工作目录,精准找到关联文件。
内容的提问来源于stack exchange,提问作者Joan Venge
相关产品推荐
相关产品推荐

