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 ab开发者_StackOverflowle 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()
returnshomedir/codes
- At
homedir
:./codes/run.sh
->os.getcwd()
returnshomedir
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]
you can get the absolute qualified path with:
os.path.join(os.path.abspath(os.curdir))
精彩评论