day15-2

一: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)  # 打印生成的格式
View Code
原文地址:https://www.cnblogs.com/yfjly/p/9813857.html