2012-11-29 153 views
1

我是一個noob;試圖在Python中創建和使用一個簡單的web服務器,該服務器執行用Python編寫的CGI腳本。我正在使用Windows XP和Python v3.3.0。我有一個包含 「myserver.py」, 「sample.html」 和目錄 「的cgi-bin」 又包含 「cgi_demo.py」無法在Python 3.3中使用CGIHTTPRequestHandler運行python cgi腳本

myserver.py一個 「MYSERVER」 目錄

from http.server import HTTPServer 
from http.server import CGIHTTPRequestHandler 

port = 8080 
host = '127.0.0.1' 
server_address = (host,port) 
httpd = HTTPServer(server_address,CGIHTTPRequestHandler) 
print("Starting my web server on port "+str(port)) 
httpd.serve_forever() 

cgi_demo.py

import cgi 
import cgitb; cgitb.enable() 

print("Content-type: text/html") 
print 
print("<html><body>") 
for i in range(0,100): 
    print(i,"<br>") 
print("</body></html>") 

現在目錄列表中工作正常 「MYSERVER」 而不是 「cgi-bin目錄」;也許這就是它的編碼 - 我在這裏沒有問題。 「sample.html」也檢索得很好。但是,「cgi_demo.py」的執行不正確。我在瀏覽器中看到一個空白頁面;並且控制檯窗口(也是空白的)出現並消失。此外,在服務器的控制檯上,我收到消息

127.0.0.1 - - [29/Nov/2012 12:00:31] "GET /cgi-bin/cgi_demo.py HTTP/1.1" 200 - 
127.0.0.1 - - [29/Nov/2012 12:00:31] command: C:\Python33\python.exe -u "D:\python apps\my web server\cgi-bin\cgi_demo.py" "" 
127.0.0.1 - - [29/Nov/2012 12:00:32] CGI script exited OK 

請告訴我什麼是錯的!我感覺我的腳本的輸出流沒有連接到服務器。我究竟做錯了什麼?不要說我必須擴展CGIHTTPRequestHandler!

回答

2

SORRY的麻煩!

嗯,這是我的錯。 2注意事項:

[1]控制檯窗口出現並消失;它只發生在我使用IDLE執行服務器時。如果腳本已經在正常的Windows控制檯中運行,那麼這不會發生。 我的感覺是錯誤的。

[2]我的CGI腳本有一個錯誤/錯誤。打印HTTP標題後;我寫的打印聲明只是「打印」而不是真正的「打印()」,這太讓人尷尬了!但是,即便如此,口譯員爲什麼沒有發現這個錯誤呢?

+0

關於[2]:我認爲這是其中一個令人討厭的python錯誤。發生在我身上,但與f.close。解釋器沒有標記這個的原因可能是因爲對函數類型對象的引用是一個有效的語句,儘管它沒有完成任何事情。 – er4z0r