Finding location of an executable in a windows machine?

Dave Angel davea at ieee.org
Fri May 15 20:01:18 CEST 2009


nonsense at mynonsense.net wrote:
> My python script calls another windows program file. I have the path
> to that program hardcoded in it. Is there a way for python to
> automatically find the path to this program?
>
> testapp_path = "C:\\Program Files\\testapp\\version\\61\\"
>
> Or do i have to do a brute force approach to searching all drives/
> folders till it finds a path matching my program name?
>
>
>   
Do you actually need the path, or do you just want the program to run as 
though you had entered it at a command prompt?  Many of the APIs for 
launching other programs will do a path search, similar to what the DOS 
box in Windows does.  Try just leaving off the path entirely.

Or you can get the PATH environment variable, parse it, and search for 
those locations yourself.  But realize that the shell also looks in a 
few places not on the path, including at least  current directory and 
windows directory (eg.  c:\windows\system32 ).  And you very likely want 
to look a few other places, such as in Program Files.

But searching the drives raw is rarely a good idea, as it's quite likely 
there's a duplicate filename out there somewhere, and you want a 
deterministic algorithm for which one will run.

Depending on how fancy your program is, you may want to do the searching 
at install time, and store the result in an xxx.ini file or equivalent.  
That file would probably go somewhere in "Documents and Settings" 
directory structure, perhaps based on the current user.  That way you 
can document how the user will customize it.

If you need help on a specific python command, you'd also need to tell 
us what version of Python you're using.
     print sys.version




More information about the Python-list mailing list