简体   繁体   中英

Python: How to find path to the script running a python script

Lets say i have a python script at homedir/codes/py/run.py I also have a bash script at homedir/codes/run.sh This bash script runs run.py by python py/run.py .

The thing is that i need to be able to find out, in run.py , the path to the calling script run.sh . If run.sh is run from its own directory, i can just use os.getcwd() . But run.sh can in principle be run from anywhere, and then os.getcwd() will return the path to where run.sh is run FROM, and not the actual location of run.sh .

ex:

  • At homedir/codes : ./run.sh -> os.getcwd() returns homedir/codes
  • At homedir : ./codes/run.sh -> os.getcwd() returns homedir

But i want homedir/codes no matter how run.sh is called. Is this possible?

To get the absolute path of the current script in bash, do:

SCRIPT=$(readlink -f "$0")

Now, pass that variable as the last argument to the python script. You can get the argument from python as:

sys.argv[-1]

您可以获得绝对合格的路径:

os.path.join(os.path.abspath(os.curdir))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM