Python跨目录运行时如何正确加载config.ini配置文件?
解决配置文件路径加载问题
问题场景
目录结构:
- IoT [文件夹]
- DC [文件夹]
- main.py
- config.ini
- DC [文件夹]
main.py中原本的代码:
config.read('config.ini')
进入IoT/DC目录运行脚本时正常,但直接在IoT目录执行python3 DC/main.py时无法加载config.ini——原因是Python默认以当前执行命令的工作目录为基准查找文件,而非脚本所在的目录。
解决方案
修改main.py的代码,通过获取脚本自身的绝对路径来拼接配置文件的正确路径,这样无论从哪个目录运行脚本,都能精准找到配置文件:
import os import configparser config = configparser.ConfigParser() # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 安全拼接配置文件路径 config_path = os.path.join(script_dir, 'config.ini') config.read(config_path)
代码说明
__file__:代表当前脚本文件的路径(可能是相对或绝对路径,取决于执行方式)os.path.abspath(__file__):将脚本路径转换为绝对路径,消除相对路径的歧义os.path.dirname(...):提取脚本所在的目录路径os.path.join(...):适配不同操作系统的路径分隔符,安全拼接目录与配置文件名
修改后,无论是在IoT/DC目录执行python main.py,还是在IoT目录执行python DC/main.py,都能正常加载config.ini。
内容的提问来源于stack exchange,提问作者Algo
相关产品推荐
相关产品推荐

