If the only caveat of using __file__
is when current, relative directory is blank (ie, when running as a script from the same directory where the script is), then a trivial solution is:
import os.path
mydir = os.path.dirname(__file__) or '.'
full = os.path.abspath(mydir)
print __file__, mydir, full
And the result:
$ python teste.py
teste.py . /home/user/work/teste
The trick is in or '.'
after the dirname()
call. It sets the dir as .
, which means current directory and is a valid directory for any path-related function.
Thus, using abspath()
is not truly needed. But if you use it anyway, the trick is not needed: abspath()
accepts blank paths and properly interprets it as the current directory.