今天无意google时看见,心里突然想说,python做web服务器,用不用这么简单啊,看来是我大惊小怪了.
web1.py
123 | #!/usr/bin/pythonimport SimpleHTTPServerSimpleHTTPServer.test() |
web2.py
123456789101112131415161718 | #!/usr/bin/pythonimport SimpleHTTPServerimport SocketServerimport os PORT = 80WEBDIR = "f:/python语言学习" class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): def translate_path(self, path): os.chdir(WEBDIR) return SimpleHTTPServer.SimpleHTTPRequestHandler.translate_path(self,path) try: httpd = SocketServer.TCPServer(("", PORT), Handler) print "dir %s serving at port %s"%(repr(WEBDIR), PORT) httpd.serve_forever()except:pass |
web3.py , cgi server ,7777端口, 在web3.py执行目录下新建cgi-bin目录 , 在cgi-bin目录写hello.py
web3.py
12345 | from CGIHTTPServer import CGIHTTPRequestHandler from BaseHTTPServer import HTTPServer server_address=('',7777) httpd = HTTPServer(server_address, CGIHTTPRequestHandler) httpd.serve_forever() |
hello.py
12345678 | #!c:/Python24/python.exe print "HTTP/1.0 200 OK"print "Content-Type: text/html"print ""print "<p>"print "Hello World!"print "</p>" |
以下这些是需要安装了 twisted 才能使用的
web4.py
1234567891011121314151617181920212223 | from twisted.web.resource import Resource from twisted.web import server from twisted.web import static from twisted.internet import reactor class ReStructured( Resource ): def __init__( self, filename, *a ): self.rst = open( filename ).read( ) def render( self, request ): return self.rst PORT=8888 resource = static.File('/') resource.processors = { '.html' : ReStructured } resource.indexNames = [ 'index.html'] reactor.listenTCP( PORT, server.Site( resource ) ) reactor.run( ) |
web5.py, 这是又是支持cgi的,又是需要twisted模块的,也是需要在cgi-bin目录下执行,上边的hello.py也能用
123456789101112131415 | # -*- coding: utf-8 -*-from twisted.internet import reactorfrom twisted.web import static, server, twcgifrom twisted.web.resource import Resource class Collection(Resource): def render_GET(self, request): return "hello world 你好" root = static.File('./')root.putChild('', Collection())root.putChild('img', static.File('./img'))root.putChild('cgi-bin', twcgi.CGIDirectory('cgi-bin'))reactor.listenTCP(80, server.Site(root))reactor.run() |
当然,想实现复杂功能还是需要自己搞代码的,只不过想惊叹python的模块集成得太多功能了.
python超简单的web服务器。