使用Python中的SocketServer显示HTML文件

时间:2014-01-19 08:03:07

标签: python webserver socketserver

当客户端使用SocketServer或内置的Python URL包发出请求时,我需要将HTML文件显示为网页。我的问题是我的displayIndex函数当前显示HTML文件的内容而不是呈现的网页。这是功能:

 def displayIndex(self):
        header = "Content-Type: text/html\r\n\r\n"
        f = open('index.html', 'r')
        dataToSend = header
        for line in f:
            dataToSend = dataToSend + line
        self.request.sendall(dataToSend)

以下是index.html的内容,在调用displayIndex时显示为代码:

<!DOCTYPE html>
<html>
<head>
        <title>Example Page</title>
        <meta http-equiv="Content-Type"
        content="text/html;charset=utf-8"/>
        <!-- check conformance at http://validator.w3.org/check -->
        <link rel="stylesheet" type="text/css" href="base.css">
</head>

<body>
        <div class="eg">
                <h1>An Example Page</h1>
                <ul>
                        <li>It works?
                        <li><a href="deep/index.html">A deeper page</a></li>
                </ul>
        </div>
</body>
</html> 

2 个答案:

答案 0 :(得分:1)

我想你可能正在寻找的东西就像是

import webbrowser
url = "file://" + somepath + "/" + "index.html"
webbrowser.open(url)

webbrowser。 这将发送一个命令,将文件显示到普通的Web浏览器(Firefox左右)。

答案 1 :(得分:0)

请参阅SimpleHTTPServer模块。

从python文档中,以下内容应该有效。它会自动查找index.html文件。

import SimpleHTTPServer
import SocketServer

PORT = 80

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()