[Tutor] help with erros using subprocess module
Bo Yang
struggleyb at gmail.com
Wed May 10 18:51:35 CEST 2006
Jerome Jabson 写道:
> Hi,
>
> I've been trying to write a wrapper around some shells
> scripts using the subprocess module. But I'm getting
> errors I quite don't know how to debug. I've only been
> writing Python for a few months and starting processes
> are new to me. Here's my code:
>
> import os
> import re
> import subprocess
>
> ####################
> #### Definition ####
> ####################
>
> def proc(cmd_in):
> cmd = cmd_in
> os.chdir("/home/qauser/jerome")
> outFile = os.path.join(os.curdir, "output.log")
> outptr = file(outFile, "w")
> errFile = os.path.join(os.curdir, "error.log")
> errptr = file(errFile, "w")
> retval = subprocess.call(cmd, 0, None, None,
> outptr, errptr)
> errptr.close()
> outptr.close()
> if not retval == 0:
> errptr = file(errFile, "r")
> errData = errptr.read()
> errptr.close()
> raise Exception("Error executing command: " +
> repr(errData))
>
> def setup():
> print "=== Starting Setup ==="
> proc("/home/qauser/jerome/qaSetup.sh")
> print "=== Setup Complete ==="
>
> def run_junit():
> file_in =
> open("/home/qauser/automation/testdata/junit_master_file",
> "r")
>
Could you put the contents in the junit_master_file here ?
Are the first field in every line where the cmd name locates contain the
full path to the
command ?
> match = re.compile('#+')
> work_list = []
> for line in file_in:
> work = line
> work = work.rstrip('\n')
> if match.search(work):
> found = False
> else:
> found = True
> if found == True:
> work_list = work.split(',')
> arg1 = work_list[0]
> arg2 = work_list[1]
> arg3 = work_list[2]
> arg4 = work_list[3]
> cmd = "/home/qauser/jerome/qaRun.sh %s %s %s
> %s"
> cmdstr = cmd % (arg1,arg2,arg3,arg4)
> print "=== Starting JUnit Run ==="
> proc(cmdstr)
> print "=== JUnit Run Complete ==="
>
>
> ####################
> ###### Main ######
> ####################
>
> setup()
> run_junit()
>
> The setup() def seems to work great, but the
> run_junit() seems to have problems. I believe due to
> the params I'm passing. Here are the errors I'm
> getting:
>
> [qauser at gary automation]$ ./runJunit.py
> === Starting JUnit Run ===
> Traceback (most recent call last):
> File "/home/qauser/automation/runJunit.py", line 63,
> in ?
> run_junit()
> File "/home/qauser/automation/runJunit.py", line 54,
> in run_junit
> proc(cmdstr)
> File "/home/qauser/automation/runJunit.py", line 18,
> in proc
> retval = subprocess.call(cmd, 0, None, None,
> outptr, errptr)
> File
> "/opt/python-2.4.3/lib/python2.4/subprocess.py", line
> 412, in call
> return Popen(*args, **kwargs).wait()
> File
> "/opt/python-2.4.3/lib/python2.4/subprocess.py", line
> 542, in __init__
> errread, errwrite)
> File
> "/opt/python-2.4.3/lib/python2.4/subprocess.py", line
> 975, in _execute_child
> raise child_exception
> OSError: [Errno 2] No such file or directory
>
> I can't seem to figure out what file or directory is
> missing.
>
> Your help is greatly appreciated,
> Jerome
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
More information about the Tutor
mailing list