如何从运行位置获取python文件的绝对路径

问题描述

我试图获取从终端运行的python文件绝对路径,而不管运行该文件文件系统在哪里。到目前为止,我已经看过this,但是使用pathlib的答案无效,因为我将要演示:

path_test.py

内容
import pathlib
path_ = pathlib.Path(__file__).absolute().parent
print(path_)

如果您从同一目录或上方任何目录 调用python3 path_test.py,则会打印出预期的输出

/home/zaid/misc/import_test

现在在包含mkdir dirpath_test.py的同一目录cd中创建一个目录,现在调用python3 ../path_test.py

输出为:

/home/zaid/misc/import_test/dir/..

破坏 python的importlib功能,并且 是预期的输出

解决方法

解决方案是通过一些快速测试:

import os
import pathlib
path_ = pathlib.Path(os.path.abspath(__file__))