学习内容:

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. 远程工作社区|远程工作|APCOW社区|AP社区

    远程工作社区|远程工作|APCOW社区|AP社区 远程工作,那是高中时代就进入我眼帘的一种生活.由于各种电影的摧残,倒是我对国外程序员的生活一直很向往.今天在纽约,下周在旧金山,过段时间又回到了自己的 ...

  2. RecyclerView的简单使用

    使用 RecyclerView 要做下面这些操作, 1.在build.gradle添加 RecyclerView的依赖,因为RecyclerView不是内置在android系统中的,请注意版本要一致 ...

  3. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. OpenCV两种畸变校正模型源代码分析以及CUDA实现

    图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法. 普通相机模型畸变校正函数针对OpenCV中的cv ...

  5. python的Web框架,中间件middleware及djangoAdmin

    简介 用于处理request和response的中间处理的函数,可以创建在项目中的任意位置,只要可以导入即可. 建议创建在APP目录下,方便管理. 函数范式与激活 中间件的范式: # 必须接受get_ ...

  6. HashMap在JDK1.8中并发操作,代码测试以及源码分析

    HashMap在JDK1.8中并发操作不会出现死循环,只会出现缺数据.测试如下: package JDKSource; import java.util.HashMap; import java.ut ...

  7. js------数组随机排序和去重

    let arr = ['g', 'b', 'c', 'd', 'e', 'a', 'g', 'b', 'c']; // 数组随机排序(原数组被修改)Array.prototype.randomSort ...

  8. SQL语句简单笔记

    Create database database name://创建数据库 Show databases dbName: //显示所有数据库 Create table tableName: //创建表 ...

  9. Android目录结构及作用

    1.add-ons-->Google API .比如GoogleMaps 2.build-tools-->各版本SDK编译工具. 3.docs-->离线开发者文档Android SD ...

  10. angularjs学习第八天笔记(指令作用域研究)

    您好,在前两天对指令的简单了解和系统指令学习后 今天主要研究其指针作用域的相关事情 每一个指令在创建时,其实就构成了自己的一个小的模块单元. 其对于的模块单元都有着其对于的作用域,其中作用域一般有两种 ...