Python day19 模块介绍3(sys,json,pickle,shelve,xml)
1.sys模块
import sys sys.path()#打印系统path sys.version()#解释程序版本信息 sys.platform()#系统平台 sys.exit(0)#退出程序 command=sys.argv[1]#从程序外部获取参数 sys.stdout.write('#')#与print相同,区别是刷进缓存 # 例子 import time for i in range(10): sys.stdout.write('#') time.sleep(1) sys.stdout.flush() #把缓存刷进显示区
2.json模块
dic="{'name': 'alex'}" f=open("hello",'w') f.write(dic) f.close() f_read=open('hello','r') c=f_read.read() print(c) print(eval(c))#eval,重新运算求出参数的内容 import json dic={'name':'littlepage'} doc=json.dumps(dic)#引号全部变成双引号,然后变成字符串 print(doc) print(type(doc)) f=open('hellod','w') f.write(doc) f.close() f_read=open('hellod','r') data=json.loads(f_read.read())#json来把字符串变成字典 print(type(data)) f_read.close() # 简写 f=open('helloddd','w') dic={'name':'littlepage'} doc=json.dump(dic,f)
3.pickle模块
import pickle#比json序列的类型更多 dic={'name':'littlepage','age':20,'gender':'male'} j=pickle.dumps(dic)#转换成字节 print(type(j)) f=open('hello','wb') pickle.dump(dic,f) f.close() f=open('hello','rb') print(pickle.loads(f.read())) import pickle#比json序列的类型更多 dic={'name':'littlepage','age':20,'gender':'male'} j=pickle.dumps(dic)#转换成字节 print(type(j)) f=open('hello','wb') pickle.dump(dic,f) f.close() f=open('hello','rb') print(pickle.loads(f.read()))
4.shelve
import shelve#操作简单,但是不常用 f=shelve.open(r'she')#将字典放入文本,f相当于一个字典,更加方便,文本存储的是一个键和范围 f['22']={"name":'ss'} f['33']='sss' f.close() f=shelve.open(r'she') print(f.get('22')['name'])#可以进行获取 print(f.get('33')) f.close() import xml.etree.cElementTree as ET #xml模块,java语言不可替代,python逐渐在用json替代,但目前还在大量使用 tree=ET.parse("xml_lesson")#解析xml,xml是树形结构 root=tree.getroot()#获取根节点 print(root.tag)#打印根标签
5.xml
#遍历xml文档 for i in root: for j in i: print(j.tag,j.attrib)#tag标签,attribute属性 print(j.text)#值 #只遍历year节点 for node in root.iter('year'): print(node.tag,node.text) #修改 for node in root.iter('year'): new_year=int(node.text)+1 node.text=str(new_year)#设置文本内容 node.set("updated","yes")#设置属性,属性值 tree.write("xmltt.xml") #删除 for country in root.findall('country'): rank=int(country.find('rank'.text))