Running Python scripts from BASH

James Stroud jstroud at mbi.ucla.edu
Tue Feb 27 18:47:25 EST 2007


Ishpeck wrote:
> I'm using Python to automate testing software for my company.   I
> wanted the computers in my testing lab to automatically fetch the
> latest version of the python scripts from a CVS repository and then
> ask a local database server which of the scripts to run.
> 
> I built the following:
> 
> #!/bin/bash
> # Batcher will run the specified scripts.
> 
> cvs update
> 
> while true
> do
>    # This part makes sure that
>    # every hour or so, we get the latest
>    # snapshot of the suite from CVS.
>    if [ $(date +%M) = 0 ]; then
>       cvs update
>       sleep 360
>    fi
>    # Then we grab the name of
>    # a randomly-selected script
>    i=$(python randomRun.py)
>    # If the return-value of randomRun.py
>    #is empty, we don't run it.
>    if ["$i"=""]; then
>       echo Not running anything
>       sleep 3600
>    # If randomRun doesn't return
>    # empty, we run the script that it prints.
>    else
>       python "$i";
>       sleep 2
>    fi
> done
> 
> 
> --------- END BASH FILE --------
> 
> For debugging purposes, you can just build "randomRun.py" to do the
> following:
> 
> print "randomRun.py"
> 
> It's silly but works.
> 
> Whenever I run this script, Python decides that it doesn't like the
> way BASH feeds it the name of the script.  I get the following
> message:
> 
> ': [Errno 22] Invalid argumentopen file 'foo.py
> 
> I dunno.  Maybe this is a better question for a BASH-related group.
> How do I get around this?
> 

Perhaps code the whole thing in python and not bash/python. Don't send a 
boy in to do a man's job.

All you need to remember is

import os
[....]
os.system('whatever command here')

James



More information about the Python-list mailing list