Python:如何找到运行Python脚本的脚本路径
假设我有一个Python脚本,路径是 homedir/codes/py/run.py
,还有一个Bash脚本,路径是 homedir/codes/run.sh
。这个Bash脚本通过 python py/run.py
来运行 run.py
。
问题是,我需要在 run.py
中找到调用它的脚本 run.sh
的路径。如果 run.sh
是在它自己的目录下运行的,我可以直接用 os.getcwd()
来获取当前工作目录。但是 run.sh
理论上可以从任何地方运行,这样 os.getcwd()
返回的就是运行 run.sh
的地方的路径,而不是 run.sh
实际所在的位置。
举个例子:
- 在
homedir/codes
目录下运行./run.sh
->os.getcwd()
返回homedir/codes
- 在
homedir
目录下运行./codes/run.sh
->os.getcwd()
返回homedir
但我希望无论 run.sh
是怎么被调用的,都能得到 homedir/codes
的路径。这可能吗?
2 个回答
3
你可以通过以下方式获取绝对路径:
os.path.join(os.path.abspath(os.curdir))
3
要在bash中获取当前脚本的绝对路径,可以这样做:
SCRIPT=$(readlink -f "$0")
然后,把这个变量作为最后一个参数传递给python脚本。你可以在python中这样获取这个参数:
sys.argv[-1]