📜  使用Python的SimpleHTTPServer模块提供文件(1)

📅  最后修改于: 2023-12-03 15:22:20.493000             🧑  作者: Mango

使用Python的SimpleHTTPServer模块提供文件

在开发或测试需要简单地提供本地文件服务时,可以使用Python自带的SimpleHTTPServer模块。该模块基于Python标准库中的BaseHTTPServer模块实现,提供了一个简单的Web服务器,可以快速地启动本地文件服务。本文将介绍如何使用SimpleHTTPServer模块提供文件服务。

简单文件服务

在命令行中执行以下命令即可在本地启动一个简单的文件服务:

python -m SimpleHTTPServer 8000

其中,python是Python解释器的可执行文件路径,SimpleHTTPServer是模块名,8000是端口号。执行完该命令后,可以通过访问http://localhost:8000来访问本地文件服务。默认情况下,文件服务提供的是当前目录下的文件。例如,如果当前目录下有一个名为index.html的文件,则可以通过http://localhost:8000/index.html来访问该文件。

指定目录

如果要指定提供文件的目录,可以在命令行中指定:

python -m SimpleHTTPServer 8000 /path/to/directory

其中,/path/to/directory是要提供的文件目录的路径。执行完该命令后,可以通过访问http://localhost:8000来访问指定目录下的文件。

自定义文件服务

如果需要自定义文件服务的实现,可以通过继承SimpleHTTPRequestHandler类来实现。例如,下面的示例将返回当前系统的CPU使用情况:

import SimpleHTTPServer
import SocketServer
import psutil

PORT = 8000

class CustomHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/cpu':
            cpu_percent = psutil.cpu_percent()
            self.send_response(200)
            self.send_header('Content-type', 'text/plain')
            self.end_headers()
            self.wfile.write('CPU usage: {}%'.format(cpu_percent))
        else:
            SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

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

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

在该示例中,自定义了一个CustomHandler类,重写了do_GET方法,当请求路径为/cpu时,返回当前系统的CPU使用情况。

总结

SimpleHTTPServer模块提供了一个简单的Web服务器,可以轻松快速地提供本地文件服务。虽然该模块的功能比较简单,但在调试和开发测试时非常有用。