首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的简单HTTP服务器。如何获取文件?

Python中的简单HTTP服务器。如何获取文件?
EN

Stack Overflow用户
提问于 2018-07-05 07:56:53
回答 1查看 4.3K关注 0票数 0

我有这样的代码可以在Python3上运行简单的服务器。我知道我可以使用像这样的python -m http.server 8080,但是我想了解它是如何工作的,并为提供文件扩展名设置限制。

我尝试使用path.join(dir, 'index.html'),但看起来不起作用。

代码语言:javascript
运行
复制
>> TypeError: join() argument must be str or bytes, not 'builtin_function_or_method'

<>

代码语言:javascript
运行
复制
from http.server import BaseHTTPRequestHandler, HTTPServer
from os import path

hostName = "localhost"
hostPort = 8080

class RequestHandler(BaseHTTPRequestHandler):
    dir = path.abspath(path.dirname(__file__))
    content_type = 'text/html'

    def _set_headers(self):
        self.send_response(200)
        self.send_header('Content-Type', self.content_type)
        self.send_header('Content-Length', path.getsize(self.getPath()))
        self.end_headers()

    def do_GET(self):
        self._set_headers()
        self.wfile.write(self.getContent(self.getPath()))

    def getPath(self):
        if self.path == '/':
            content_path = path.join(dir, 'index.html')
        else:
            content_path = path.join(dir, str(self.path))
        return content_path

    def getContent(self, content_path):
        with open(content_path, mode='r', encoding='utf-8') as f:
            content = f.read()
        return bytes(content, 'utf-8')

myServer = HTTPServer((hostName, hostPort), RequestHandler)
myServer.serve_forever()
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51181876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档