一:json&pickle 模块
json 用于字符串和python数据类型进行转换。因为python中的数据类型不能写入文件,所以需要转换为字符串或者bytes存入文件中
pickle 用于python特有的数据类型和python的数据类型进行转换
json 提供四个功能,dumps,dump,loads,load
pickle....... dumps,dump,loads,load
见前面笔记
二:shelve模块是一个简单的k,v 将内存数据持久化的一个模块,可以持久化任何pickle 可支持的python 数据类型
import shelve import datetime d = shelve.open('shelve_test1') # time = datetime.datetime.now() # person = {'name':'ri','sex':'man'} # data = ['mon','sat','sun'] # # d['time'] = time # d['person'] = person # d['data'] = data # d.close() # 将信息存入文件,生成三个文件 shelve_test1后缀分别为.bak .dat .dir print(d.get('time')) print(d.get('person')) print(d.get('data')) d.close()
三:xml模块
xml模块是实现不同语言或者程序之间进行数据交换的协议,和json类似,但json使用起来更加方便简单。在现在很多传统公司仍然使用xml较多
xml 通过 <> <> 节点来区别数据结构
xml文件
1 <?xml version="1.0"?> 2 <softCompany> 3 <company>MicroSoft</company> 4 <name>yang</name> 5 <age>99</age> 6 <company>google</company> 7 <sex> 8 <p>男</p> 9 <m>女</m> 10 </sex> 11 <company>Apple</company> 12 <company>百度</company> 13 </softCompany>
xml模块读操作
1 # python处理xml 2 import xml.etree.ElementTree as ETX 3 4 tree = ETX.parse('xmltest.xml') 5 root = tree.getroot() 6 print(root) # 返回地址 7 print(root.tag) # 打印标签 8 9 # <Element 'softCompany' at 0x0000000000B57188> 10 # softCompany 11 12 # 遍历xml文档 13 for child in root: 14 print(child.tag,child.text,child.attrib,'sss') 15 for node in child: 16 print(node.tag,node.attrib,node.text) 17 # 只遍历company节点 18 print('stop'.center(50,'-')) 19 for node in root.iter('company'): 20 print(node.tag,node.attrib) 21 22 # <Element 'softCompany' at 0x0000000001167188> 23 # softCompany 24 # company MicroSoft {} sss 25 # name yang {} sss 26 # age 99 {} sss 27 # company google {} sss 28 # sex 29 # {} sss 30 # p {} 男 31 # m {} 女 32 # company Apple {} sss 33 # company 百度 {} sss 34 # -----------------------stop----------------------- 35 # company {} 36 # company {} 37 # company {} 38 # company {}
xml写操作
import xml.etree.ElementTree as ET tree = ET.parse("xmltest.xml") root = tree.getroot() #修改 for node in root.iter('year'): new_year = int(node.text) + 1 node.text = str(new_year) node.set("updated","yes") tree.write("xmltest.xml") #删除node for country in root.findall('country'): rank = int(country.find('rank').text) if rank > 50: root.remove(country) tree.write('output.xml')
创建
#修改和删除xml内容 import xml.etree.ElementTree as ET new_xml = ET.Element("namelist") name = ET.SubElement(new_xml, "name", attrib={"enrolled": "yes"}) age = ET.SubElement(name, "age", attrib={"checked": "no"}) sex = ET.SubElement(name, "sex") sex.text = '男' name2 = ET.SubElement(new_xml, "name", attrib={"enrolled": "no"}) age = ET.SubElement(name2, "age") age.text = '19' et = ET.ElementTree(new_xml) # 生成文档对象 et.write("test.xml", encoding="utf-8", xml_declaration=True) ET.dump(new_xml) # 打印生成的格式