python library call equivalent to `which' command

Tim Golden mail at timgolden.me.uk
Mon Jun 29 14:58:00 EDT 2009


Tim Pinkawa wrote:
> On Mon, Jun 29, 2009 at 12:54 PM, destroooooy<destroooooy at gmail.com> wrote:
>> Hi,
>>  I'm looking for a Python library function that provides the same
>> functionality as the `which' command--namely, search the $PATH
>> variable for a given string and see if it exists anywhere within. I
>> currently examine the output from `which' itself, but I would like
>> something more portable. I looked through the `os' and `os.path'
>> modules but I didn't find anything.
> 
> This works on POSIX systems. Windows uses semicolons to separate paths
> rather than colons so that would need to be taken into account when
> running on Windows. This also doesn't recognize shell built-ins, only
> real binaries.
> 
> import os
> 
> def which(file):
>     for path in os.environ["PATH"].split(":"):
>             if file in os.listdir(path):
>                     print "%s/%s" % (path, file)
> 
>>>> which("ls")
> /bin/ls

There's a "which.py" in the tools directory included in
the Python distribution. On windows, that's
c:\python26\tools\scripts; don't know where to look
on Linux.

Don't know how good it is as I -- like many, I suspect --
wrote my own, which in my case is Windows-specific.

TJG



More information about the Python-list mailing list