学习内容:

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. linux中一些简便的命令之wc

    wc命令是统计文本中的字符数.单词数以及文本行数的,具体参数如下: -l 统计文本中的行数 -w 统计文本中的单词数 -c/m 统计文本中的字符数 -L 统计文本中最长行的字符数 当然使用时也可以不带 ...

  2. 开源API测试工具 Hitchhiker v0.10 - 中文版

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持自动化测试, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api. ...

  3. abstract、virtual、sealed、 interface、struct 基础知识整理

    abstract abstract 修饰符指示被修改内容的实现已丢失或不完整. abstract 修饰符可用于类.方法.属性.索引和事件. 在类声明中使用 abstract修饰符以指示某个类仅旨在作为 ...

  4. mongodb数据库添加权限及简单数据库命令操作笔记

    加固mongodb建议:修改数据库默认端口,添加数据库访问权限: 启动数据库(裸奔):C:\mongodb\bin>mongod --dbpath C:\MongoDB\data(同时用--db ...

  5. Python学习的路上,Anaconda送你一双遮天神翼

    一.背景 ​ 最近在学习python,发现在本地搭建python环境的时候,要是想要同时搭建不同python版本的环境,就比较麻烦,很容易就出现冲突了,很是头疼.然后光明就出现这山重水复疑无路的时候, ...

  6. git在工作中的用法总结-环境安装篇

    使用git有很长一段时间了 ,平时用到的时候都是直接google,经常用到的一些也记录在笔记中,但有时候笔记太多,实在是太乱了(其实是我太懒~ 哈?),找都要半天的时候还不如直接google,今天有空 ...

  7. 微信支付的JAVA SDK存在漏洞,可导致商家服务器被入侵(绕过支付)XML外部实体注入防护

    XML外部实体注入 例: InputStream is = Test01.class.getClassLoader().getResourceAsStream("evil.xml" ...

  8. JavaWeb学习 (十九)————JavaBean

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  9. tensorflow实现循环神经网络

    包括卷积神经网络(CNN)在内的各种前馈神经网络模型, 其一次前馈过程的输出只与当前输入有关与历史输入无关. 递归神经网络(Recurrent Neural Network, RNN)充分挖掘了序列数 ...

  10. Sharepoint 2010 工作流状态值

    在Sharepoint2010中,如果要使用工作流状态值进行筛选,必须使用内部值,不能使用文字,要不然是筛选不出来的. 进行中:2 已取消:4 已批准:16 拒绝:17 下边是已取消的工作流状态: