python第十八天
学习内容:
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第十八天的更多相关文章
- 孤荷凌寒自学python第二十八天python的datetime.date模块
孤荷凌寒自学python第二十八天python的datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.toordinal() 此方法将访问从公元1年1月1日至当 ...
- 孤荷凌寒自学python第十八天python变量的作用范围
孤荷凌寒自学python第十八天python函数的形参与变量的范围 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.在python的函数中各种不同的形式参数在定义的先后顺序上有规定: 必须 ...
- python第十八天-----Django基础
1.路由系统 a.普通路由 url(r'^index$', views.index), b.正则路由 url(r'^index/(\d*)', views.index), url(r'^manage/ ...
- python第十八天 多态 和 私有
python的多态比较特别 多态, 字面意思,多种状态. 扩展下 -> 执行同样的操作,结果却不同. 对使用的操作者来说, 就是执行同一个方法, 得到了不同的结果. 在操作者看来,像是 具备 ...
- 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8
孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...
- 孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1
孤荷凌寒自学python第六十八天学习并实践beautifulsoup模块1 (完整学习过程屏幕记录视频地址在文末) 感觉用requests获取到网页的html源代码后,更重要的工作其实是分析得到的内 ...
- 孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库
孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第四天.今天的感觉是,mongoDB数据 ...
- 孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成
孤荷凌寒自学python第四十八天通用同一数据库中复制数据表函数最终完成 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天经过反复折腾,最终基本上算 ...
- 孤荷凌寒自学python第三十八天初识python的线程控制
孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...
随机推荐
- 2-2 Todolist简单案例
用v-on,v-for,v-model实现简单的Todolist案例
- python列表常用方法
list是一个类,用中括号括上,逗号分隔,元素可以是数字,字符,字符串,也可以是嵌套列表,布尔类型. 1.通过索引取值 li=[1,12,9,'age',['wangtianning',[19,'10 ...
- html 可编辑的下拉框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spring Boot SSL [https]配置例子
前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server. ...
- java学习-消息队列rabbitmq的组成
rabbitMQ组成部分 rabbitmq有以下组成部分,分别为: 1. Server(broker)接受客户端连接,实现AMQP消息队列和路由功能的进程 2.虚拟主机virtual host虚拟主机 ...
- PHP官方网站及PHP手册
每个人都知道php.net,我们或早或晚的都会来到这里并不断的访问它.它是PHPer的主要参考网站,拥有大量有用的信息,但是这些信息却不是那么显而易见. 比较有用的官方PHP资源: PHP官方函数手册 ...
- Python机器学习笔记:不得不了解的机器学习面试知识点(1)
机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...
- input框限制只能输入正整数、字母、小数、汉字
有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 代码如下: <input onkeyup="if ...
- 阿里云服务器 Mysql数据库的安装和使用
为了做服务迁移,mysql的安装总是不那么顺利, 教程很多, 但都不能够一蹴而就, 所以,单独总结一篇, 当然也借鉴了一些前辈的经验. ================================ ...
- Apollo 4 客户端 SDK 设计
前言 之前聊了客户端的一些功能,例如融入 Spring, @value 注解的自动刷新实现,长轮询等,这次从客户端的整体设计来聊聊. 设计 上图是 client 项目的包结构. 其中,核心包就是 in ...