2016-09-09 5 views
0

저는 파이썬 스크립트를 가지고 있으며 터미널이나 명령 줄에서 실행하면 제대로 실행되지만 내부 서버 오류가 발생해도 문제가 발생하지 않습니다. 웹에서 실행할 스크립트를 향상시키는 방법.결과를 웹 cgi에 표시

HTML 당신은 HTTP 헤더를 출력하지 않을

#!/usr/bin/python 
import cgi, os 
import cgitb; cgitb.enable() 
import simplejson as json 
import optparse 
import sys 

try: # Windows needs stdio set for binary mode. 
    import msvcrt 
    msvcrt.setmode (0, os.O_BINARY) # stdin = 0 
    msvcrt.setmode (1, os.O_BINARY) # stdout = 1 
except ImportError: 
    pass 

form = cgi.FieldStorage() 

# A nested FieldStorage instance holds the file 
fileitem = form['file'] 
fn = os.path.basename(fileitem.filename) 
data = open('/tmp/upload-cgi/' + fn, 'wb').write(fileitem.file.read()) 
data=fileitem.file.read() 
location_database = open('/home/bioinformatics2/DW/taxo.json', 'r') 
database = json.load(location_database) 

for line in data: 
for taxonomy in database: 
    if taxonomy["genus"] == line.replace('\n','') : 
    print "Kingdom: %s," % taxonomy['kingdom'], 
    print "phylum: %s," % taxonomy['phylum'], 
    print "class: %s," % taxonomy['class'], 
    print "order: %s," % taxonomy['order'], 
    print "family: %s," % taxonomy['family'], 
    print "genus: %s" % taxonomy['genus'] 
    break 
else: 
    print ("No found genus on taxanomy") 

답변

1

<html><body> 
<form enctype="multipart/form-data" action="http://localhost/cgi-bin/coba5.py" method="post"> 
<p>File: <input type="file" name="file"></p> 
<p><input type="submit" value="Upload"></p> 
</form> 
</body></html> 

PYTHON. 최소한, 당신은 출력이 필요합니다

print "Content-Type: text/plain" 
print "" 

당신은 또한 두 번 파일을 읽고 :

data = open('/tmp/upload-cgi/' + fn, 'wb').write(fileitem.file.read()) 
data=fileitem.file.read() 

을 두 번째 fileitem.file.read() 아마 어떤 내용을 읽을 수 없습니다, 파일이 이미 마지막에해야하기 때문에 -of-file이므로 data은 비어 있습니다.

+0

"print"Content-Type : text/plain "위"print "왕국 : % s", % taxonomy [ 'kingdom'] '그러나 여전히 같은 오류입니다. –

+0

두 줄 필요 - 'Content-Type' 행과 공백 행. –

+0

여전히 동일한 오류 –