热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模块序列化jsonpickleshelvxml

序列化序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes.json模块pickle模块json和pickle得

序列化

序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes.


json 模块

json.dump(d,f)   json.load(f)     #与文件得交互  dump(可多次,但不那样做)  load(只可一次) 

把数据类型转成字符串存到内存里得意义?
json.dumps(data)   json.loads(q)  #与内存得交互  
1.把内存数据 通过网络 共享给远程其他人  必须:bytes
2.定义了不同语言之间得交互规则   
  2.1 纯文本:坏处不能共享复杂得数据类型
      18:32  424224  iphone  5000 
  2.2 xml 占得空间大 效率低
      
        
            2018  # year:2018
        
      
  2.3 json 简单 可读性好
      data = {
         'roles':[
             {'role':'monster','type':'pig','life':50},
             {'role':'hero','type':'关羽','life':80}
         ]
      }


import json

data = {
    'roles':[
        {'role':'monster','type':'pig','life':50},
        {'role':'hero','type':'关羽','life':80}
    ]
}

s = json.dumps(data)
print(s,type(s))
data = json.loads(s)
print(data,type(data),data['roles'])

json.dump(data,open('test.json','w',encoding='utf-8'))
data = json.load(open('test.json','r',encoding='utf-8'))
print(data['roles'],type(data))

pickle 模块

rb wb  和json得四个方法一样 写读 都是bytes形式的 可以将函数dump load都行 

 pickle.dumps(d)    json.loads(d) 
 pickle.dump(d,pk)  pickle.load(pk)  


import pickle

data = {
    'roles':[
        {'role':'monster','type':'pig','life':50},
        {'role':'hero','type':'关羽','life':80}
    ]
}

def sayhi():
    print('sayhi')

s = pickle.dumps(data)
print(s,type(s))
data = pickle.loads(s)
print(data,type(data),data['roles'])

pickle.dump(data,open('test.json','wb'))
data = pickle.load(open('test.json','rb'))
print(data,type(data))

s = pickle.dumps(sayhi)
print(s)
data = pickle.loads(s)
data()
pickle.dump(sayhi,open('test1.json','wb'))
pickle.load(open('test1.json','rb'))()

json 和 pickle 得区别

json    转化得数据类型:str int list tuple dict 不支持set
pickle  支持python里得所有数据类型 确定是 只能在python里使用  函数都可以序列化 

shelve 模块

pickle封装了shelve 只能在python中用

序列化:
import shelve

f = shelve.open('shelve_test')  # 打开一个文件
names = ["alex", "rain", "test"]
info = {'name':'alex','age':22}
f["names"] = names  # 持久化列表
f['info_dic'] = info
f.close()

反序列化:
import shelve
d = shelve.open('shelve_test')  # 打开一个文件
print(d['names'])
print(d['info_dic'])

#del d['test'] #还可增加 删除 可整体重新赋值 

xml 模块

作用:
不同语言之间内存数据得交换
内存得数据可转换成xml存到硬盘上

1.xml的格式如下,就是通过<>节点来区别数据结构的:


    
        2
        2008
        141100
        
        
    
    
        5
        2011
        59900
        
    
    
        69
        2011
        13600
        
        
    



2.xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml   
import xml.etree.ElementTree as ET

tree = ET.parse("xmltest.xml")
root = tree.getroot()
print(root.tag)

#遍历xml文档
for child in root:
    print(child.tag, child.attrib)
    for i in child:
        print(i.tag,i.text)

#只遍历year 节点
for node in root.iter(&#39;year&#39;):
    print(node.tag,node.text)


3.修改和删除xml文档内容
import xml.etree.ElementTree as ET

tree = ET.parse("xmltest.xml")
root = tree.getroot()

#修改
for node in root.iter(&#39;year&#39;):
    new_year = int(node.text) + 1
    node.text = str(new_year)
    node.set("updated","yes")

tree.write("xmltest.xml")

#删除node
for country in root.findall(&#39;country&#39;):
   rank = int(country.find(&#39;rank&#39;).text)
   if rank > 50:
     root.remove(country)

tree.write(&#39;output.xml&#39;)

4.自己创建xml文档
import xml.etree.ElementTree as ET

new_xml = ET.Element("namelist")
name = ET.SubElement(new_xml,"name",attrib={"enrolled":"yes"})
age = ET.SubElement(name,"age",attrib={"checked":"no"})
sex = ET.SubElement(name,"sex")
sex.text = &#39;33&#39;
name2 = ET.SubElement(new_xml,"name",attrib={"enrolled":"no"})
age = ET.SubElement(name2,"age")
age.text = &#39;19&#39;

et = ET.ElementTree(new_xml) #生成文档对象
et.write("test.xml", encoding="utf-8",xml_declaration=True)

ET.dump(new_xml) #打印生成的格式

模块 序列化 json pickle shelv xml


推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
author-avatar
此恨缠绵_793
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有