Subprocess module in Python CGI

274 views
Skip to first unread message

Anurag

unread,
Dec 22, 2008, 5:51:31 AM12/22/08
to Django users
Hello,

I have started using python recently and would like to call a short
python script via
browser using a CGI script, but initially I am trying to call the same
python script directly through python command line. The script intends
to
perform a few command line in a pipe and I have written the script (a
short
one) as follows. I would later also like to import this application to
Django.

#!/usr/bin/python

import cgi, string, os, sys, cgitb, commands, subprocess
import posixpath, macpath
#file = "x.tar.gz"
#comd = "tar -xf %s" % (file)
#os.system(comd)
#commands.getoutput('tar -xf x.tar.gz | cd demo; cp README ../')
comd = [\
"tar -xf x.tar.gz", \
"cd demo", \
"cp README ../", \
]
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(comd, 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))


but after trying to execute this independently, I get the following
error
which I am unable to interpret :

Traceback (most recent call last):
File "process.py", line 18, in <module>
retval = subprocess.call(comd, 0, None, None, outptr, errptr)
File "/usr/lib/python2.5/subprocess.py", line 443, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.5/subprocess.py", line 593, in __init__
errread, errwrite)
File "/usr/lib/python2.5/subprocess.py", line 1135, in
_execute_child
raise child_exception


Could someone suggest where am I going wrong and if corrected, what is
the
probability of this script being compatible with being called through
the
browser. Thanking you people in advance.

Regards.

Anurag

unread,
Dec 23, 2008, 6:28:26 AM12/23/08
to Django users
I have also missed out a last line at the end of the Traceback ...
this may be important in fishing out the error. The last line is:

OSError: [Errno 2] No such file or directory

Looking forward to some kind of suggestions.
Thanking you all once again and with Regards.

Kenneth Gonsalves

unread,
Dec 23, 2008, 7:59:43 AM12/23/08
to django...@googlegroups.com
On Monday 22 Dec 2008 4:21:31 pm Anurag wrote:
> comd = [\
>         "tar -xf x.tar.gz", \

nothing to do with python:
[lawgon@localhost programs]$ tar -xf x.tar.gz
tar: x.tar.gz: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

btw, there is no need to put '\' when putting a list in more than one line. In
general, in python, you can put anything within (), [] or {} on more than one
line without any escaping.

--
regards
KG
http://lawgon.livejournal.com

Anurag

unread,
Jan 8, 2009, 5:56:35 AM1/8/09
to Django users

Hello Kenneth,

Thank you for your suggestion. This was helpful to remove a sort of
redundancy in my program but removal of '\' still does not solve my
problem as the Error displayed remains exactly the same.
Any other suggestions?

Once again thank you so much for your valuable time.
Regards.



On Dec 23 2008, 1:59 pm, Kenneth Gonsalves <law...@thenilgiris.com>
wrote:
Reply all
Reply to author
Forward
0 new messages