Find directory name of file?

Fuzzyman fuzzyman at gmail.com
Mon Jan 30 12:53:22 CET 2006


Peter Hansen wrote:
> jmdeschamps at gmail.com 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
<http://www.voidspace.org.uk/python/pathutils.html>`_ 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
        imp.is_frozen("__main__"))

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,


Fuzzyman
http://www.voidspace.org.uk/python/index.shtml

> -Peter




More information about the Python-list mailing list