Fix Python – How can I find script’s directory? [duplicate]

Question

Asked By – Jonathan Livni

Consider the following Python code:

import os
print os.getcwd()

I use os.getcwd() to get the script file’s directory location. When I run the script from the command line it gives me the correct path whereas when I run it from a script run by code in a Django view it prints /.

How can I get the path to the script from within a script run by a Django view?

UPDATE:
Summing up the answers thus far – os.getcwd() and os.path.abspath() both give the current working directory which may or may not be the directory where the script resides. In my web host setup __file__ gives only the filename without the path.

Isn’t there any way in Python to (always) be able to receive the path in which the script resides?

Now we will see solution for issue: How can I find script’s directory? [duplicate]


Answer

You need to call os.path.realpath on __file__, so that when __file__ is a filename without the path you still get the dir path:

import os
print(os.path.dirname(os.path.realpath(__file__)))

This question is answered By – Czarek Tomczak

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0