假设我在homedir/codes/py/run.py
有一个python脚本
我在homedir/codes/run.sh
也有一个bash脚本
此bash脚本按run.py
运行python py/run.py
。
问题是我需要能够在run.py
中找到调用脚本run.sh
的路径。如果run.sh
从其自己的目录运行,我可以使用os.getcwd()
。但run.sh
原则上可以在任何地方运行,然后os.getcwd()
将返回run.sh
运行FROM的路径,而不是run.sh
的实际位置。
例如:
homedir/codes
:./run.sh
- > os.getcwd()
返回homedir/codes
homedir
:./codes/run.sh
- > os.getcwd()
返回homedir
但无论homedir/codes
如何调用,我都希望run.sh
。这可能吗?
答案 0 :(得分:3)
要获取bash中当前脚本的绝对路径,请执行以下操作:
SCRIPT=$(readlink -f "$0")
现在,将该变量作为python脚本的最后一个参数传递。您可以从python获取参数:
sys.argv[-1]
答案 1 :(得分:3)
你可以通过以下方式获得绝对合格的路径:
os.path.join(os.path.abspath(os.curdir))