版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。https://blog.csdn.net/testcs_dn/article/details/50449112
Python帮助函数调试函数 用于获取对象的属性及属性值
刚接触Python,上篇 《Python入门》第一个Python Web程序——简单的Web服务器 中调试很不方便,不知道对象具体有什么属性,包含什么值,所以写了一个函数,用于获取对象的属性及属性值
函数代码如下:
#调试函数,用于输出对象的属性及属性值
def getAllAttrs(obj):
strAttrs = ''
for o in dir(obj):
strAttrs =strAttrs + o + ' := ' + str(getattr(obj,o)) + '
'
return strAttrs;具体应用代码:
import os#Python的标准库中的os模块包含普遍的操作系统功能
from BaseHTTPServer import HTTPServer,BaseHTTPRequestHandler #导入HTTP处理相关的模块
#调试函数,用于输出对象的属性及属性值
def getAllAttrs(obj):
strAttrs = ''
for o in dir(obj):
strAttrs =strAttrs + o + ' := ' + str(getattr(obj,o)) + '
'
return strAttrs;
#自定义处理程序,用于处理HTTP请求
class TestHTTPHandler(BaseHTTPRequestHandler):
#处理GET请求
def do_GET(self):
#页面输出模板字符串
templateStr = '''
QR Link Generator%s
'''
self.protocal_version = 'HTTP/1.1'#设置协议版本
self.send_response(200)#设置响应状态码
self.send_header("Welcome","Contect")#设置响应头
self.end_headers()
self.wfile.write(templateStr % getAllAttrs(self))#输出响应内容
#启动服务函数
def start_server(port):
http_server = HTTPServer(('',int(port)),TestHTTPHandler)
http_server.serve_forever()#设置一直监听并接收请求
os.chdir('static')#改变工作目录到 static 目录
start_server(8000)#启动服务,监听8000端口输出如下:
MessageClass := mimetools.Message
__doc__ := None
__init__ := >
__module__ := __main__
address_string := >
client_address := ('127.0.0.1',38178)
close_connection := 1
command := GET
connection :=
date_time_string := >
default_request_version := HTTP/0.9
disable_nagle_algorithm := False
do_GET := >
end_headers := >
error_content_type := text/html
error_message_format :=
Error response
Error code %(code)d.
Message: %(message)s.
Error code explanation: %(code)s = %(explain)s.
finish := >
handle := >
handle_one_request := >
headers := Host: localhost:8000 Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/47.0.2526.106 Safari/537.36 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4,en-GB;q=0.2 Cookie: bdshare_firstime=1451130349627
log_date_time_string := >
log_error := >
log_message := >
log_request := >
monthname := [None,'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
parse_request := >
path := /
protocal_version := HTTP/1.1
protocol_version := HTTP/1.0
raw_requestline := GET / HTTP/1.1
rbufsize := -1
request :=
request_version := HTTP/1.1
requestline := GET / HTTP/1.1
responses := {200: ('OK','Request fulfilled,document follows'),201: ('Created','Document created,URL follows'),202: ('Accepted','Request accepted,processing continues off-line'),203: ('Non-Authoritative Information','Request fulfilled from cache'),204: ('No Content',nothing follows'),205: ('Reset Content','Clear input form for further input.'),206: ('Partial Content','Partial content follows.'),400: ('Bad Request','Bad request syntax or unsupported method'),401: ('Unauthorized','No permission -- see authorization schemes'),402: ('Payment Required','No payment -- see charging schemes'),403: ('Forbidden','Request forbidden -- authorization will not help'),404: ('Not Found','Nothing matches the given URI'),405: ('Method Not Allowed','Specified method is invalid for this resource.'),406: ('Not Acceptable','URI not available in preferred format.'),407: ('Proxy Authentication Required','You must authenticate with this proxy before proceeding.'),408: ('Request Timeout','Request timed out; try again later.'),409: ('Conflict','Request conflict.'),410: ('Gone','URI no longer exists and has been permanently removed.'),411: ('Length Required','Client must specify Content-Length.'),412: ('Precondition Failed','Precondition in headers is false.'),413: ('Request Entity Too Large','Entity is too large.'),414: ('Request-URI Too Long','URI is too long.'),415: ('Unsupported Media Type','Entity body in unsupported format.'),416: ('Requested Range Not Satisfiable','Cannot satisfy request range.'),417: ('Expectation Failed','Expect condition could not be satisfied.'),100: ('Continue','Request received,please continue'),101: ('Switching Protocols','Switching to new protocol; obey Upgrade header'),300: ('Multiple Choices','Object has several resources -- see URI list'),301: ('Moved Permanently','Object moved permanently -- see URI list'),302: ('Found','Object moved temporarily -- see URI list'),303: ('See Other','Object moved -- see Method and URL list'),304: ('Not Modified','Document has not changed since given time'),305: ('Use Proxy','You must use proxy specified in Location to access this resource.'),307: ('Temporary Redirect',500: ('Internal Server Error','Server got itself in trouble'),501: ('Not Implemented','Server does not support this operation'),502: ('Bad Gateway','Invalid responses from another server/proxy.'),503: ('Service Unavailable','The server cannot process the request due to a high load'),504: ('Gateway Timeout','The gateway server did not receive a timely response'),505: ('HTTP Version Not Supported','Cannot fulfill request.')}
rfile :=
send_error := >
send_header := >
send_response := >
server :=
server_version := BaseHTTP/0.3
setup := >
sys_version := Python/2.7.10
timeout := None
version_string := >
wbufsize := 0
weekdayname := ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
wfile :=
登录后自动展开