best way of testing a program exists before using it?

Rob Wolfe rw at smsnet.pl
Mon Sep 11 15:13:40 EDT 2006


Steve Holden <steve at holdenweb.com> writes:

> Rob Wolfe wrote:
>> Hari Sekhon wrote:
>>
>>>I am writing a wrapper to a binary command to run it and then do
>>>something with the xml output from it.
>>>
>>>What is the best way of making sure that the command is installed on the
>>>system before I try to execute it, like the python equivalent of the
>>>unix command "which"?
>>>
>>>Otherwise I'd have to do something like:
>>>
>>>if os.system('which somecommand') != 0:
>>>    print "you don't have %s installed" % somecommand
>>>    sys.exit(1)
>>>
>>>I know that isn't portable which is why a python solution would be
>>>better (although this will run on unix anyway, but it'd be nice if it
>>>ran on windows too).
>> IMHO this is pretty portable:
>>
>>>>>def is_on_path(fname):
>> ....     for p in os.environ['PATH'].split(os.pathsep):
>> ....             if os.path.isfile(os.path.join(p, fname)):
>> ....                     return True
>> ....     return False
>>
> Except that the fname will then have to be a ".exe" on Windows and not
> on Unix.

My function doesn't check if the file is executable at all.
This function checks only if the file exists on the PATH. 
I know it isn't a perfect solution but it is portable.

-- 
Regards,
Rob



More information about the Python-list mailing list