python超简单的web服务器
web1.py
- #!/usr/bin/python
- import SimpleHTTPServer
- SimpleHTTPServer.test()
web2.py
- #!/usr/bin/python
- import SimpleHTTPServer
- import SocketServer
- import os
- PORT = 80
- WEBDIR = "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
- from CGIHTTPServer import CGIHTTPRequestHandler
- from BaseHTTPServer import HTTPServer
- server_address=('',7777)
- httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
- httpd.serve_forever()
hello.py
- #!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
- 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也能用
- # -*- coding: utf-8 -*-
- from twisted.internet import reactor
- from twisted.web import static, server, twcgi
- from 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的模块集成得太多功能了.