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> -- -- http://mail.python.org/mailman/listinfo/python-list