best way of testing a program exists before using it?

Tim Williams tim at tdw.net
Mon Sep 11 12:34:45 EDT 2006


On 11/09/06, Hari Sekhon <hpsekhon at googlemail.com> wrote:
> Tim Williams wrote:
> > On 11/09/06, Hari Sekhon <hpsekhon at googlemail.com> wrote:
> >>
> >>  Steve Holden wrote:
> >>  Hari Sekhon wrote:
> >>
> >>
> >>  The easiest way to test whether the command will run is to try and run
> >> it. If the program doesn't exist then you'll get an exception, which you
> >> can catch. Otherwise you'll be stuck with non-portable mechanisms for
> >> each platform anyway ...
> >>
> >> regards
> >>  Steve
> >>
> >>
> >>  Yeah, this occurred to me just after I sent the mail, but I don't
> >> really
> >> want to run the program because it will go off and do some work and take
> >> time to come back. If there is a better way then that would be great. I
> >> can't think of anything other than what you have suggested with a
> >> message
> >> saying that the program wasn't found in the path which would be the most
> >> appropriate error since the path could also be wrong.
> >
> >
> > If you run your wrapper and the program exists then you don't have to
> > test for it,  so the overall process is quicker and cleaner than
> > testing-for *then* running the program
> >
> > If you run your wrapper and the program doesn't exist, then you have
> > performed your "if exists"  test without extra code and with very
> > little processing, and the raised exception will lead you nicely into
> > your "not exists" scenario.
> >
> > try:
> >    run_somecommand
> > except:
> >    print "you don't have %s installed" % somecommand
> >
> >
> > HTH :)
> >
> The down side to that is the program has to be run which consumes time
> and slows the script down a fair bit (as well as outputting garbage to
> the screen)
>

Sorry,  I don't follow!!

If the program doesn't exist how can you run it ???

If the program does exist then running is what you wanted it to do
anyway and you've saved doing a test for it first.

:)

-- 

Tim Williams



More information about the Python-list mailing list