学习内容:

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. 超级详细使用Webpack4.X 搭建H5开发环境

    超级详细使用Webpack4.X 搭建H5开发环境 会撸码的小马 关注 2018.05.29 17:17* 字数 603 阅读 6453评论 0喜欢 5 很久没弄博客了,这两天有点时间来搞一下最近在弄 ...

  2. 深度解析 Vue 响应式原理

    深度解析 Vue 响应式原理 该文章内容节选自团队的开源项目 InterviewMap.项目目前内容包含了 JS.网络.浏览器相关.性能优化.安全.框架.Git.数据结构.算法等内容,无论是基础还是进 ...

  3. python-UiAutomator学习&使用

    一.安装 源码地址: https://github.com/xiaocong/uiautomator#basic-api-usages ①下载zip包,解压到本地目录下 ②进入对应目录下,执行 $su ...

  4. Python:渗透测试开源项目【源码值得精读】

    sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工具:HULK SSL安全扫描器:SSLyze 网 ...

  5. kafka+elk

    安装elasticsearch 下载:http://www.elastic.co/downloads/elasticsearch 下载后解压 修改配置文件,xxx是自定义目录 vi elasticse ...

  6. jq通过对象获取其ID值

    $(this).click(function(){ var this_id=$(this).attr("id");// attr(属性名) 获取属性的值 alert(this_id ...

  7. openshift pod对外访问网络解析

    openshift封装了k8s,在网络上结合ovs实现了多租户隔离,对外提供服务时报文需要经过ovs的tun0接口.下面就如何通过tun0访问pod(172.30.0.0/16)进行解析(下图来自理解 ...

  8. SQL 必知必会·笔记<7>汇总数据——使用聚合函数

    有时候我们需要对表中的数据进行汇总,而不需要数据本身,为了方便这些类型的检索,SQL给出了5个聚合函数,SQL聚合函数在各主要的SQL实现中得到了相当一致的支持.如下: 1.1 AVG()函数 AVG ...

  9. Java 容器源码分析之ConcurrentHashMap

    深入浅出ConcurrentHashMap(1.8) 前言 HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CP ...

  10. C++的静态联编和动态联编

    联编的概念 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系. 意思就是这个函数的实现有多种,联编就是把调用和 ...