shelve模块
shelve模块比pickle模块简单,只有一个open,返回类似字典的对象,可读可写:key必须为字符串,
而值可以是python所支持的数据类型
import shelve
f=shelve.open(r'shelve.txt')
f['stu1_info']={'name':'egon','age':18,'hobby':['piao','smoking','drinking']}
f['stu2_info']={'name':'gangdan','age':53}
f['school_info']={'website':'http://www.pypy.org','city':'beijing'}
print(f['stu1_info']['hobby'])
f.close()
xml模块
xml是实现不同语言或者程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单,不过、
,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统
的接口还主要是xml
xml的格式如下,就是通过<>节点来区别数据结构的:
#==========================================>查 import xml.etree.ElementTree as ET # # tree=ET.parse('a.xml') # root=tree.getroot() #三种查找节点的方式 # res=root.iter('rank') # 会在整个树中进行查找,而且是查找到所有 # for item in res: # # print(item) # print('='*50) # print(item.tag) # 标签名 # print(item.attrib) #属性 # print(item.text) #文本内容 # res=root.find('country') # 只能在当前元素的下一级开始查找。并且只找到一个就结束 # print(res.tag) # print(res.attrib) # print(res.text) # nh=res.find('neighbor') # print(nh.attrib) # cy=root.findall('country') # 只能在当前元素的下一级开始查找, # print([item.attrib for item in cy]) #==========================================>改 # import xml.etree.ElementTree as ET # tree=ET.parse('a.xml') # root=tree.getroot() # # for year in root.iter('year'): # year.text=str(int(year.text) + 10) # year.attrib={'updated':'yes'} # # # # tree.write('b.xml') # tree.write('a.xml') #==========================================>增 import xml.etree.ElementTree as ET tree=ET.parse('a.xml') root=tree.getroot() for country in root.iter('country'): # print(country) year=country.find('year') # print(year) if int(year.text) > 2020: # print(country.attrib) # ele=ET.Element('egon') # ele.attrib={'nb':'yes'} # ele.text='非常帅' # country.append(ele) country.remove(year) tree.write('b.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 = '33' 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) #打印生成的格式