How do I find executable files from the environment PATH variable?

Noah noah at noah.org
Mon Aug 5 21:02:20 EDT 2002


Basically I want to write "which" in Python.

Is there a way I can find if a given executable exists 
in the environment PATH?

os.path does not have any functions to help. None of them expand the
PATH environment variable. Also os.access() requires an absolute path.

Am I forced to check every directory in PATH 
and test each one with os.access()? If so then
will this script duplicate the actions of the
shell in searching for an executable file?

#!/usr/bin/env python
import os, sys
def which (filename):
    if not os.environ.has_key('PATH') or os.environ['PATH'] == '':
        p = os.defpath
    else:
        p = os.environ['PATH']

    pathlist = p.split (os.pathsep)

    for path in pathlist:
        f = os.path.join(path, filename)
        if os.access(f, os.X_OK):
            return f
    return None

print which (sys.argv[1])


Thanks for any help!

Yours,
Noah



More information about the Python-list mailing list