学习内容:

json 模块,pickle模块,shelve模块,xml模块

json 模块  序列化:

 import json,pickle

 info={
'name':'a',
'age':34,
'func':''
}
with open('text.txt','w') as f:
#f.write(json.dumps('test.txt'))#新建一文件用于存入序列化的数据
f.write(json.dumps(info))#序列化

json 模块  反序列化(从另一个程序打开文件):

 import json,pickle
with open('text.txt','r')as f: fp=json.loads(f.read())#反序列化
#fp=json.load(f)# 效果与loads一样
 print('\033[32;1m%s\033[0m'%fp)

pickle模块 用法,方法与jsong 一样(不同的是,pickle可以存对象格式,如有函数可以存函数的对象属性):

 def func1():
print('')
info2={
'name':'a',
'age':34,
'func':func1 }
with open('test','wb') as f2:
f2.write(pickle.dumps(info2))# ===pickle.dump(info2,f2) 效果一样

pickle模块 反序列化:

 def func1():
pass with open('test','rb') as f2:
c=pickle.load(f2)
#c=pickle.loads(f2.read())#效果与loads一样 print(c)

shelve模块(相当于可以多次ldump,和load):

shelve采用key与vaule对应的字典方式,通过文件对数据进行持久化--可以持久化任何pickle可支持的python数据格式:

 import shelve

 def func_1(name,age):#定义一个函数
print(name,age) name=['a','b','c','d']#定义一个列表
age=[1,2,3,4] d=shelve.open('test_3.txt')#用shelve来打开文件 #将各个对象存入文件
d['name']=name
d['age']=age
d['func']=func_1
d.close()

shelve,反序列化:

 import shelve
def func_1(name,age):#定义一个函数与shelve存入的函数名相同
print(age)
f=shelve.open('test_3.txt')#打开之前存入数据的文件 name=f['name']#提取出对应的数据name
print(name) age=f['age']#提取出对应的数据age
func_1=f['func']#提取出对应的数据func_1
func_1(name,age)#提取出对应的数据

xml模块:创建,读取,修改,删除

创建:

 import xml.etree.ElementTree as ET

 test_xml=ET.Element('test_1')#创建XML文档赋于变量
name=ET.SubElement(test_xml,'name',attrib={'name':'efg1'})#添加子节点
age=ET.SubElement(name,'age')#子节点添加子节点
age.text=''#添加内容
obj=ET.SubElement(name,'obj')
obj.text='IT' name=ET.SubElement(test_xml,'name',attrib={'name':'efg2'})#添加子节点
age=ET.SubElement(name,'age')#子节点添加子节点
age.text=''#添加内容
obj=ET.SubElement(name,'obj')
obj.text='MAG' name=ET.SubElement(test_xml,'name',attrib={'name':'efg3'})#添加子节点
age=ET.SubElement(name,'age')#子节点添加子节点
age.text=''#添加内容
obj=ET.SubElement(name,'obj')
obj.text='HR' et=ET.ElementTree(test_xml)#生成文档对象
et.write('test_1',encoding='utf-8',xml_declaration=True) ET.dump(et)#打印输出文档对象

创建的结果为:

 <?xml version='1.0' encoding='utf-8'?>
<test_1>
<name name="efg1">
<age>23</age>
<obj>IT</obj>
</name>
<name name="efg2">
<age>24</age>
<obj>MAG</obj>
</name>
<name name="efg3">
<age>42</age>
<obj>HR</obj>
</name>
</test_1>

读取:

 import xml.etree.ElementTree as ET 

 tree=ET.parse('test_1')#打开读取文件内容到变量
root=tree.getroot()#获取根节点
# for child in root:#遍历节点
# print(child.tag,child.attrib)#输出标签,属性
# for i in child:#遍历子节点
# print(i.tag,i.text)#输出标签和内容 for x in root.iter('age'):#输出指定标签内容
print(x.tag,x.text)

修改:

 import xml.etree.ElementTree as ET 

 tree=ET.parse('test_1')#打开读取文件内容到变量
root=tree.getroot()#获取根节点 for node in root.iter('age'):#获取到指定标签
new_age=int(node.text)+3 #对age的内容值进行修改
node.text=str(new_age)#对其内容重新赋值
node.set('uppdate','yes')#添加新的属性值
tree.write('test_2.xml')#新重写入文档
 <test_1>
<name name="efg1">
<age uppdate="yes">26</age>
<obj>IT</obj>
</name>
<name name="efg2">
<age uppdate="yes">27</age>
<obj>MAG</obj>
</name>
<name name="efg3">
<age uppdate="yes">45</age>
<obj>HR</obj>
</name>
</test_1>

删除:

 import xml.etree.ElementTree as ET 

 tree=ET.parse('test_1')#打开读取文件内容到变量
root=tree.getroot()#获取根节点 for country in root.findall('name'):#获取指定标签名的所有标签
age=int(country.find('age').text)#获取标签对应 的值
if age>25:
root.remove(country)#进行删除
else:
pass tree.write('test_3.xml')

删除结果:

 <test_1>
<name name="efg1">
<age>23</age>
<obj>IT</obj>
</name>
<name name="efg2">
<age>24</age>
<obj>MAG</obj>
</name>
</test_1>

python第十八天的更多相关文章

  1. 孤荷凌寒自学python第二十八天python的datetime.date模块

     孤荷凌寒自学python第二十八天python的datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.toordinal() 此方法将访问从公元1年1月1日至当 ...

  2. 孤荷凌寒自学python第十八天python变量的作用范围

    孤荷凌寒自学python第十八天python函数的形参与变量的范围 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.在python的函数中各种不同的形式参数在定义的先后顺序上有规定: 必须 ...

  3. python第十八天-----Django基础

    1.路由系统 a.普通路由 url(r'^index$', views.index), b.正则路由 url(r'^index/(\d*)', views.index), url(r'^manage/ ...

  4. python第十八天 多态 和 私有

    python的多态比较特别 多态, 字面意思,多种状态. 扩展下 -> 执行同样的操作,结果却不同. 对使用的操作者来说, 就是执行同一个方法, 得到了不同的结果. 在操作者看来,像是   具备 ...

  5. 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

    孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...

  6. 孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1

    孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1 (完整学习过程屏幕记录视频地址在文末) 感觉用requests获取到网页的html源代码后,更重要的工作其实是分析得到的内 ...

  7. 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库

    孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...

  8. 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成

    孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...

  9. 孤荷凌寒自学python第三十八天初识python的线程控制

     孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...

随机推荐

  1. 使用request爬取拉钩网信息

    通过cookies信息爬取 分析header和cookies 通过subtext粘贴处理header和cookies信息 处理后,方便粘贴到代码中 爬取拉钩信息代码 import requests c ...

  2. 常用博客Metaweblog Api地址

    常用博客Metaweblog Api地址 CSDN: http://write.blog.csdn.net/xmlrpc/index 博客园(cnblogs):http://www.cnblogs.c ...

  3. 原创python:windows解决genymotion appium adb 的问题。

    首先请安装好genymotion 与并用其下载好要用的安卓版本. (其中Oracle VM VirtualBox可以自己单独安装也可以在下载genymotion时选择包含vbox的) 参考https: ...

  4. SQL 必知必会·笔记<17>使用存储过程

    存储过程就是为以后使用而保存的一条或多条SQL 语句.可将其视为批文件,虽然它们的作用不仅限于批处理. 1. 存储过程的优点和缺点 存储过程的优点: 使用存储过程有三个主要的好处,即简单.安全.高性能 ...

  5. SQL 必知必会·笔记<9>使用子查询

    子查询(subquery),即嵌套在其他查询中的查询. 1. 利用子查询进行过滤 SELECT 语句中,子查询总是从内向外处理.示例: SELECT cust_name, cust_contact F ...

  6. 独享锁 & 共享锁

    独享锁(互斥锁):同时只能有一个线程获得锁.比如,ReentrantLock 是互斥锁,ReadWriteLock 中的写锁是互斥锁. 共享锁:可以有多个线程同时获得锁.比如,Semaphore.Co ...

  7. 从逻辑思维中学习CSS,从宽高说起

    从宽高说起 从宽高说起,我们知道一个物体的大小是由长.宽.高三个方向的尺寸决定的,但是你想啊电脑显示器是一个平面的,而不是3维,另因网页大部分情况下只需要使用到2维,所以为了简单在CSS中只有宽和高的 ...

  8. [译]ABP vNext微服务演示,项目状态和路线图

    译注: ABP的主要负责人hikalkan最近又发布了一篇博客, 说明了ABP vNext的微服务演示,项目状态和路线图.其中特意对ABP的中文社区进行了感谢! 本文翻译自该博客文章(https:// ...

  9. 深度学习论文翻译解析(一):YOLOv3: An Incremental Improvement

    论文标题: YOLOv3: An Incremental Improvement 论文作者: Joseph Redmon Ali Farhadi YOLO官网:YOLO: Real-Time Obje ...

  10. Oracle添加定时任务

    1.创建存储过程 注:执行语句后,如果需要请添加commit 2.添加定时job,执行存储过程 declare job_delete number; begin dbms_job.submit( jo ...