Find directory name of file?

Fuzzyman fuzzyman at
Mon Jan 30 06:53:22 EST 2006

Peter Hansen wrote:
> jmdeschamps at wrote:
> > also the function os.cwd()
> > ;-)
> I'm not sure how os.cwd() helps, but generally the solution to this
> starts with pointing out that sys.argv[0] usually contains the path to
> the main script, which is often the answer needed.
> Recipes have been posted in the past which cover a wider range of
> situations, including when running as a "py2exe'd" program (i.e.
> "frozen"), as the simple solution doesn't cover all cases.
> Checking the archives would probably help.

There are a couple of functions from `pathutils
<>`_ that do this
(originally supplied by Thomas Heller I believe) :

def main_is_frozen():
    """Return ``True`` if we're running from a frozen program."""
    import imp
    return (
        # new py2exe
        hasattr(sys, "frozen") or
        # tools/freeze

def get_main_dir():
    """Return the script directory - whether we're frozen or not."""
    if main_is_frozen():
        return os.path.abspath(os.path.dirname(sys.executable))
    return os.path.abspath(os.path.dirname(sys.argv[0]))

just call ``get_main_dir()`` and it works consistently with py2exe'd
scripts and normal scripts.

All the best,


> -Peter

More information about the Python-list mailing list