DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Python (http://www.daniweb.com/forums/forum114.html)
-   -   Help with finding out if a program exists in os path entries (http://www.daniweb.com/forums/thread159618.html)

punmeister Nov 26th, 2008 3:09 pm
Help with finding out if a program exists in os path entries
 
Hey hey!
I'm trying to write a script that finds out if a given program name exists in the OS environments PATH variable (cross plathform). Thing is, I get a NameError, it's probably a simple error, but I've struggling with it the last hour.

Any help would be appreciated
#!/usr/bin/env python
import os
import os.path

"""
If the folder the program  resides in is not added to the path the
program will naturally not run, since the executing environment have
no idea where it resides.
"""

if findprogram("mathlab")[0] == 1:
    print "W00t"
else:
    print "Oh noes!"

def findprogram(program):
    path = os.environ['PATH']
    paths = path.split(os.pathsep)
    for d in paths:
        if os.path.isdir(d):
            fullpath = os.path.join(d, program)
            if sys.platform[:3] == 'win':
                for ext in '.exe', '.bat':
                    if os.path.isfile(fullpath + ext):
                      return 1, program_path
            else:
                if os.path.isfile(fullpath):
                    return 1, program_path
    return 0, program + " command not found"

jlm699 Nov 26th, 2008 3:25 pm
Re: Help with finding out if a program exists in os path entries
 
You're calling the function findprogram before defining it.... if you simply rearrange your code so that the
def findprogram(program):
block is first, you'll solve the problem. You'll then find that you forgot to
import sys

And then you'll find that you're trying to use some variable called program_path when instead you might have wanted fullpath

A good way to avoid this is to not ever let your code hang out in the ether like that... commonplace is to place your code all into functions, and have a main() function to call them... Here's a pretty commonly used method:
#!/usr/bin/python
import #whatever needs imported

def # Define some functions

def main():
    # Do anything that needs done here
    # Call functions, etc...

if __name__ == '__main__':
    main()

punmeister Nov 27th, 2008 12:13 pm
Re: Help with finding out if a program exists in os path entries
 
Crap, I see that now. I can't belive I'd forgotton how C-like python was. Is there any way you can define prototypes in python like C?


All times are GMT -4. The time now is 1:26 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC