python27期day16:序列化、hashlib、collections、软件开发规范、作业。

json&pickle模块
#1、
dic = '{"name":"alex"}'
f = open("hello","w")
f.write(dic)
#2、json模块字符串必须双引dumps
import json
dic = {"name":"alex"}
i = 8
s = 'hello'
l = [11,22]
data = json.dumps(l)
print(l)
print(type(data))
#3、loads
# f_read = open("new_hello","r")
# data = json.loads(f_read.read())
# print(data)
# print(type(data))
#4、
import json
with open("json_test","r") as f:
data = f.read()
data = json.loads(data)
print(data["name"])
#5、pickle转化后的类型 是bytes字节类型
import pickle
dic = {"name":"alvin","age":23,"sex":"male"}
print(type(dic))
j = pickle.dumps(dic)
print(j)
print(type(j)) #
f = open("序列化对象_pickle","wb") #w是写入str、wb是写入bytes、j是bytes
f.write(j)
shelve模块
#1、将字典放入文本
import shelve
f = shelve.open(r"shelve")
f["stul_info"] = {"name":"alex","age":"18"}
f.close()
# dic = {}
# dic["name"] = "alvin"
# dic["info"] = {"name":"alex"}
XML模块
#1、用getroot打印根节点
import xml.etree.ElementTree as ET #as后面的ET代指前面模块的名字
tree = ET.parse("xml_lesson.xml") #用ET里面的parse方法并赋予对象tree、
root = tree.getroot()
print(root.tag)
#2、遍历xml文档
for i in root:
print(i)
#3、遍历属性tag
for i in root:
print(i.tag)
#4、双层循环遍历
for i in root:
for j in i:
print(j.tag)
#5、看值attrib属性组成键值对
for i in root :
print(i.attrib)
#6、遍历打印子元素
for i in root:
for j in i:
print(j.attrib)
#7、text
for i in root:
for j in i:
print(j.text)
re正则模块
import re
#1、找到以a开头和l结尾的
s = "hellocdalexfdsfdsfdsf"
print(s.find("alex"))
#2、371481198506143635(alex身份证号)
print(re.findall("\d+","alex22ccsd45vcxvcx767bvcbcv876"))
#3、findall(匹配规则+内容)
print(re.findall("alex","afdsvcxvfsg"))
#4、a..x(代表以a开头中间任意两个字符以x结尾的
print(re.findall("a..x","affxcvcvsdf"))
#5、^尖角号代表以什么开头
print(re.findall("^a..c","acxcxacxcx"))
#6、$代表以什么结尾
print(re.findall("a..x$","acxvfsdfsdarrx"))
#7、*代表0到无穷次
print(re.findall("d*","dfdsfdsfdsadsadddddddddvcxvxc"))
#8、?
#9、{}为范围取
#10、[]中括号字符集
#11、(小括号
print(re.findall("\([^()]*\)","12 + (34 * 6 + 2 - 5*(2-1)"))
#12\d
#13\D
#14、|管道符代表或的意思
print(re.findall(r"ka|b","sdjkbsf"))
print(re.findall(r"ka|b","sdjkabsf"))
print(re.findall(r"ka|bc","sdjkabcsf"))
#15、d+
print(re.sub("\d+","A","fdsfdsfjaskd4324vcxvxc"))
#16、加参数
print(re.subn("\d","A","jackcxcvsdfd4343543543vcxvxcavcxvxd543534fdfds",8))
#17、
loging日志模块
#1、日志级别
import logging
#2、增加参数
# logging.basicConfig(
# level=logging.DEBUG,
# filename="logger.log",
# filename="w" #模式是追加
# )
# logging.debug("debug message")
# logging.info("info message")
# logging.warning("warning message")
# logging.error("error message")
# logging.critical("critical message")
#3、
import configparser
config = configparser.ConfigParser() #用configparser模块里面的ConfigParser类生成config对象
config["DEFAULT"] = {"ServerAliveInterval" : "45", #键值对
"Compression": "yes",
"CompressionLevel" : "9"}

config["bitbucket.org"] = {}
config["bitbucket.org"]["User"] = "hg"
config["topsecret.server.com"] = {}
topsecret = config["topsecret.server.com"]
topsecret["Host Port"] = "50022"
topsecret["ForwardXll"] = "no"
config["DEFAULT"]["ForwardXll"] = "yes"
with open("example.ini","w") as configfile:
config.write(configfile)
hashlib哈希模块
#1、摘要算法、hash算法
import hashlib
obj = hashlib.md5("dsfdsfdsfds".encode("utf8")) #fdsfsdfds指的是加颜
obj.update("admin".encode("utf-8"))
print(obj.hexdigest())
socketserver模块

server类:处理链接包含:BaseServer、TcpServer、UdpServer、UnixStreamServer、UnixDatagramServer。
request类:处理通信包含BaseRequestHandler、StreamRequestHandler、DatagramRequestHandler。
对于tcp来说
self.request=conn
对于udp来说
self.request=(client_data_bytes,udp的套接字对象)

猜你喜欢

转载自www.cnblogs.com/zhang-da/p/11689790.html