'Run Python Script From Script Directory/Current Directory

[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 :)



Solution 1:[1]

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 puthon script from is:

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

Make it executable:

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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 kinshukdua