Python, subprocess, call(), check_call and returncode to find if a command exists
Question: I've figured out how to use call() to get my python script to run a command:

    
    
    import subprocess
    
    mycommandline = ['lumberjack', '-sleep all night', '-work all day']
    subprocess.call(mycommandline)
    

This works but there's a problem, what if users don't have lumberjack in their
command path? It would work if lumberjack was put in the same directory as the
python script, but how does the script know it should look for lumberjack? I
figured if there was a command-not-found error then lumberjack wouldn't be in
the command path, the script could try to figure out what its directory is and
look for lumberjack there and finally warn the user to copy lumberjack into
one of those two places if it wasn't found in either one. How do I find out
what the error message is? I read that check_call() can return an error
message and something about a returncode attribute. I couldn't find examples
on how to use check_call() and returncode, what the message would be or how I
could tell if the message is command-not-found.

Am I even going about this the right way?


Answer: A simple snippet:

    
    
    try:
        subprocess.check_call(['executable'])
    except subprocess.CalledProcessError:
        pass # handle errors in the called executable
    except OSError:
        pass # executable not found
    

