新手在這裏。任何幫助將不勝感激。python os.system錯誤:「全局名稱輸出」未定義「
我正在寫一個運行tcp pcap診斷工具的cgi腳本。如果我想在bash運行命令時,它看起來像:
/home/fsoft/cap/capnostic -r 38350 /home/fsoft/brad.pcap > 38350
所以我試圖做到這一點在Python:
output = os.system('/home/fsoft/cap/capnostic -r' + port + directory+filename '>' + jobdir+filename
我有一種感覺,「>」是搞亂的東西了。 。但我似乎無法找到正確的語法。另外,一旦我正確地得到命令,我將能夠打印輸出變量?
print '%s' % (output)
輸出可爲3個數據頁面..
感謝您的幫助。
這裏是我的全碼:
#!/usr/bin/env python
import cgi, os
import cgitb; cgitb.enable()
import subprocess
form = cgi.FieldStorage()
port = form.getvalue("port")
filename = form.getvalue("filename")
directory = form.getvalue("directory")
jobdir = '/var/www/jobs/' + filename
def createdir():
os.system('mkdir /var/www/jobs/' + filename)
createdir()
def capout():
output = os.system('/home/fsoft/cap/capnostic -r %s %s%s > %s%s' % (port, directory, filename, jobdir, filename))
capout()
def htmlout():
print 'Content-type: text/html\n'
print '<html>'
print '<head>'
print '<title>Capnostic Output</title>'
print '</head>'
print '<body>'
print '<BR><BR><BR><center>'
print '<table border=0>'
print '<TR>'
print '<TD><center>port = %s<BR>filename = %s<BR>Directory = %s<BR>Job Directory = %s</TD>' % (port,filename,directory,jobdir)
print '</TR>'
print '</table>'
print '<BR><BR><BR>'
print '%s' % (output)
print '</body>'
print '</html>'
htmlout()
它現在告訴我:
<type 'exceptions.NameError'>: global name 'output' is not defined
args = ("global name 'output' is not defined",)
message = "global name 'output' is not defined"
'打印' %s'%(output)'可能是多餘的。如果你能做到這一點,你應該能夠做'打印輸出'。 – murgatroid99 2012-08-10 18:55:45
根據[官方文檔](http://docs.python.org/library/os#os.system)'子進程模塊爲產生新進程和檢索結果提供了更強大的功能;使用該模塊優於使用os函數# – RanRag 2012-08-10 18:58:11