Re: using subprocess module in Python CGI

Discussion in 'Python' started by Matt Nordhoff, Dec 24, 2008.

  1. ANURAG BAGARIA wrote:
    > Hello,
    >
    > I am a Python Newbie 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.
    >
    > #!/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 ../", \
    > ]


    That's not how subprocess.call() works. You're trying to run an
    executable called "tar -xf x.tar.gz", passing it the arguments "cd demo"
    and "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.


    Well, you'd need to output something, but otherwise, sure, why not?

    print "Content-Type: text/html"
    print
    print "<html>...</html>"

    > Regards.


    Why do you even need to use subprocess to do this? All it's doing is
    extracting the README file from a tarball, right? You can use the
    tarfile module for that.

    <http://docs.python.org/library/tarfile.html>
    --
     
    Matt Nordhoff, Dec 24, 2008
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Peter Otten
    Replies:
    3
    Views:
    749
    Nobody
    Feb 15, 2010
  2. hiral
    Replies:
    2
    Views:
    632
    Jean-Michel Pichavant
    May 5, 2010
  3. fatted
    Replies:
    1
    Views:
    182
    Steve Grazzini
    Jul 25, 2003
  4. Sarbjit singh
    Replies:
    2
    Views:
    399
    Nobody
    Jul 23, 2012
  5. iMath
    Replies:
    26
    Views:
    419
    iMath
    Dec 9, 2013
Loading...

Share This Page