这是我的 Python3 项目层次结构:
projet
\
script.py
web
\
index.html
从 script.py
,我想运行一个 http 服务器来提供 web
文件夹的内容。
Here建议使用此代码运行一个简单的 http 服务器:
import http.server
import socketserver
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
httpd.serve_forever()
但这实际上服务于 project
,而不是 web
。如何指定要服务的文件夹的路径?
最佳答案
在 Python 3.7 中 SimpleHTTPRequestHandler
can take a directory
argument :
import http.server
import socketserver
PORT = 8000
DIRECTORY = "web"
class Handler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=DIRECTORY, **kwargs)
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
从命令行:
python -m http.server --directory web
有点疯狂...您可以为任意目录创建处理程序:
def handler_from(directory):
def _init(self, *args, **kwargs):
return http.server.SimpleHTTPRequestHandler.__init__(self, *args, directory=self.directory, **kwargs)
return type(f'HandlerFrom<{directory}>',
(http.server.SimpleHTTPRequestHandler,),
{'__init__': _init, 'directory': directory})
with socketserver.TCPServer(("", PORT), handler_from("web")) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
关于python - 如何运行服务于特定路径的 http 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801718/