获取脚本路径有好多方法。如下列出几种方法并讨论几种方法的异同。
- 通过os.getcwd()获取
- 通过sys.path[0]获取
- 通过os.path.split(os.path.realpath(__file__))[0]获取
通过 os.getcwd 获取
这种方式获取的路径是当前的工作目录。也就是在命令行起脚本(该脚本不一定是写有os.getcwd的脚本)的路径。
通过 sys.path[0] 获取
这种方式获取的路径是初始执行的脚本的目录。
通过 os.path.split(os.path.realpath(file))[0] 获取
这种方式获取的路径是该脚本的路径。
例子
层级结构:
/base_dir/
-|path_tst
-|super_path.py
-|model
-|mod_path.py
mod_path.py的代码如下:
import os
import sys
def get_cwd_m():
return os.getcwd()
def sys_path_m():
return sys.path[0]
def file_path_m():
return os.path.split(os.path.realpath(__file__))[0]
super_path.py的代码如下:
from model.mod_path import get_cwd_m
from model.mod_path import sys_path_m
from model.mod_path import file_path_m
if __name__ == "__main__":
cwd_pth = get_cwd_m()
sys_pth = sys_path_m()
file_pth = file_path_m()
print("cwd_path: {}".format(cwd_pth))
print("sys_path: {}".format(sys_pth))
print("file_path: {}".format(file_pth))
现在在/base_dir/ 目录下执行 python3 path_tst/super_path.py。执行结果如下:
cwd_path: /base_dir/
sys_path: /base_dir/path_tst
file_path: /base_dir/path_tst/model