Refer: https://www.afternerd.com/blog/python-http-server/
Web Server的概念
用Python实现Web Server
Python 2中SimpleHTTPServer模块被合并到Python 3的http.server模块。它支持目录浏览,指定端口,指定绑定地址等。
- 方法一:直接在命令行调用http.server模块
python -m http.server 8080 --bind 127.0.0.1
8080: Web服务器端口号, --bind 参数指定只能本地访问
- 使用脚本实现,假定脚本名字为pyWebServer.py,内容如下。
import http.server
import socketserver
PORT = 8081
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.serve_forever()
完整版:
import http.server
import socketserver
import argparse
import ipaddress
import sys
import os
VERSION = 1.0
PORT = 8081
IP = "0.0.0.0"
def start_web_server(ip, port, root):
Handler = http.server.SimpleHTTPRequestHandler
print("pyWebServer v{}".format(VERSION), " by HanselSoft")
print("starting web server at {}:{}, root dir={}".format(ip, port, root))
try:
os.chdir(root)
with socketserver.TCPServer((ip, port), Handler) as httpd:
httpd.serve_forever()
except Exception as e:
print("Error: ", e)
sys.exit(-2)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--port', '-p', type=int,
help='server port number, default is {}'.format(PORT),
default=PORT)
parser.add_argument('--ip', '-i',
help='bind to address, default is {}'.format(IP),
default=IP)
parser.add_argument('--dir', '-d',
help='web server root directory, default is current \
directory', default=os.getcwd())
args = parser.parse_args()
try:
ipaddress.ip_address(args.ip)
except ValueError:
print("Error: incorrect IP: ", args.ip)
sys.exit(-1)
if not os.path.isdir(args.dir):
print("Error: directory '{}' is not existed.".format(args.dir))
sys.exit(-1)
start_web_server(args.ip, args.port, args.dir)
if __name__ == '__main__':
try:
main()
except (KeyboardInterrupt, SystemExit):
sys.exit(0)
在一个目录下运行后,自动以该目录为Web的根目录。
编译成单个.exe文件
- 安装pyinstaller: pip install pyinstaller
- 运行命令: pyinstaller -F -c pyWebServer.py
- 在dist目录下可以找到单个exe文件:pyWebServer.exe,大小大概为6MB,非常小巧
进阶
可以自定义一个Handler取代SimpleHTTPRequestHandler实现更复杂的功能。
请到我的下载资源里直接下载打包好的exe文件:https://download.csdn.net/download/hansel/11156550