Run Python Script From Script Directory/Current Directory

Question:

[Introduction]

Hi! I’m working on a python script to automate installation of UWP-Apps, it’s been a long time i’m not touching Python; until this day. The script uses Depedencies inside the script directory, i’ve looking up on my older scripts and found this specific code.

os.chdir(os.path.dirname(sys.argv[0]))

[Problematic]

However, using the above code doesn’t work on my current script but it’s working fine on older scripts. When using above, it shows:

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: ''

Already looking up on Internet about this topic; but most of them was talking about running the script from outer/different directory that leads me to dead end.

Any helps is appreciated 🙂

Asked By: Xavi

||

Answers:

The easiest answer is probably to change your working directory, then call the .py file from where it is:

cd path/to/python/file && python ../.py

Of course you might find it even easier to write a script that does it all for you, like so:

Save this as runPython.sh in the directory where you’re running the python script from, is:

#!/bin/sh
cd path/to/python/file
python ../script.py

Make it executable (for yourself):

chmod +x ./runPython.sh

Then you can simply enter your directory and run it:

./runPython.sh

If you want to only make changes to the python script:

mydir = os.getcwd() # would be the folder where you're running the file
mydir_tmp = "path/to/python/file" # get the path
mydir_new = os.chdir(mydir_tmp) # change the current working directory
mydir = os.getcwd() 

The reason you got an error was because sys.argv[0] is the name of the file itself, instead you can pass the directory as a string and use sys.argv[1] instead.

Answered By: kinshukdua
import os
from os.path import abspath, dirname
os.chdir(dirname(abspath(__file__)))

You can use dirname(abspath(__file__))) to get the parent directory of the python script and os.chdir into it to make the script run in the directory where it is located.

Answered By: leaves
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.