portable way of locating an executable (like which)

Ian Kelly ian.g.kelly at gmail.com
Thu Sep 20 18:32:42 EDT 2012


On Thu, Sep 20, 2012 at 4:21 PM, Chris Angelico <rosuav at gmail.com> wrote:
> os.sep is the directory separator, but os.pathsep may be what you
> want. Between that and os.getenv('path') you can at least get the
> directories. Then on Windows, you also need to check out
> os.getenv('pathext') and split _that_ on the semicolon, and try each
> of those as a file extension. I'm not sure whether or not Windows will
> add extensions from pathext if one is given on the command line - for
> instance, if typing "foo.exe" will search for "foo.exe.bat" - but the
> basics are there.

Easy enough to test:

C:\>echo echo hello! > foo.exe.bat

C:\>foo.exe
hello!

Yup, it does.  It looks like it tries it without the extension first, though:

C:\>copy c:\windows\notepad.exe foo.exe
        1 file(s) copied.

C:\>foo.exe
[starts notepad]



More information about the Python-list mailing list