Python:如何找到运行Python脚本的脚本路径

3 投票
2 回答
743 浏览
提问于 2025-04-16 00:55

假设我有一个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]

撰写回答