如何获取Python脚本文件的绝对目录路径而非当前工作目录
获取Python脚本文件的绝对目录路径,而非当前工作目录
问题场景
假设app.py位于/home/user/coding/python/目录下,原代码用os.getcwd()获取当前工作目录:
# app.py import os print(os.getcwd())
- 在脚本所在目录执行
python app.py,输出脚本目录;但切换到/home/user/执行python '/home/user/coding/python/app.py'时,输出的是当前工作目录/home/user,而非脚本所在目录。
解决方案
要获取脚本本身的绝对目录,需要利用Python内置的__file__变量,结合路径处理模块实现:
方法1:使用os.path模块(兼容Python2和Python3)
修改app.py代码如下:
# app.py import os # 先获取脚本的绝对路径 script_abs_path = os.path.abspath(__file__) # 再提取脚本所在的目录 script_dir = os.path.dirname(script_abs_path) print(script_dir)
方法2:使用pathlib模块(Python3.4+推荐)
pathlib提供了更直观的面向对象路径操作:
# app.py from pathlib import Path # resolve() 转为绝对路径,parent 获取父目录(即脚本所在目录) script_dir = Path(__file__).resolve().parent print(script_dir)
测试验证
无论在哪个目录执行脚本:
- 在
/home/user/coding/python/下执行python app.py,输出/home/user/coding/python/ - 在
/home/user/下执行python '/home/user/coding/python/app.py',输出同样为/home/user/coding/python/
内容的提问来源于stack exchange,提问作者Shezan
相关产品推荐
相关产品推荐

