广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python Json与pickle数据序列化
  • 756
分享到

python Json与pickle数据序列化

序列化数据python 2023-01-30 21:01:24 756人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。为了避免数据丢失,把变量从内存中变成可存储或传输的过程称之为序列化序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过

在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。

为了避免数据丢失,把变量从内存中变成可存储或传输的过程称之为序列化

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。


反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化


先用常规的方法将一个字典写入到文件中

info = {
    'name':"zhang",
    'age':22
}
with open('test.txt','w') as f:
    #字典无法写入文件,必须转换成字符串
    f.write(str(info))

执行程序,查看test.txt文件内容如下:

{'name': 'zhang', 'age': 22}


读取文件内容,加载到内存中,需要用到eval

eval() 将字符串str当成有效的表达式来求值并返回计算结果

with open('test.txt','r') as f:
    data = eval(f.read())
    print(data['name'])

执行输出 zhang


下面介绍 标准用法,用JSON模块

序列化:

import json
info = {
    'name':"zhang",
    'age':22
}
with open('test.txt','w') as f:
    f.write(json.dumps(info))
    #查看序列化之后的变量类型
    print(type(json.dumps(info)))

执行输出 class 'str'

可以看到类型是字符串了。


反序列化:

import json
with open('test.txt','r') as f:
    data = json.loads(f.read())
    print(data['name'])

执行输出 zhang


json只能处理简单的数据类型,比如:字符串、字典、列表等

不支持函数,类 转换。


json主要用于不同语言之间数据交互

是目前主流的数据交互格式。


那么其他复杂的数据类型,要序列化,怎么办呢?用pickle


pickle,用于python特有的类型 和 python的数据类型间进行转换。


pickle的语法和json是一样的

序列化

import pickle
info = {
    'name':"zhang",
    'age':22
}
#因为pickle之后,类型是二进制,所以模式是wb
with open('test.txt','wb') as f:
    f.write(pickle.dumps(info))
    #查看序列化之后的变量类型
    print(type(pickle.dumps(info)))

执行输出 class 'bytes'


反序列化

import pickle
with open('test.txt','rb') as f:
    data = pickle.loads(f.read())
    print(data['name'])

执行输出 zhang


注意:pickle的数据类型只有python能用,其他语言,比如java是不能识别的。


pickle代码优化

序列化

import pickle
info = {
    'name':"zhang",
    'age':22
}
with open('test.txt','wb') as f:
    pickle.dump(info,f)

执行效果同上

pickle.dump(info,f) 就等同于 f.write(pickle.dumps(info))


反序列化

import pickle
with open('test.txt','rb') as f:
    data = pickle.load(f)
    print(data['name'])

执行效果同上

pickle.load(f) 等同于 pickle.loads(f.read())


举一个特殊例子

多次序列化


这里先序列化一次,修改年龄之后,再序列化一次

import json

info = {
    'name':"zhang",
    'age':22
}
with open('test.txt','w') as f:
    json.dump(info,f)
    info['age'] = 21
    json.dump(info, f)

执行程序,查看test.txt内容

{"name": "zhang", "age": 22}{"name": "zhang", "age": 21}


反序列化

import json
with open('test.txt','r') as f:
    data = json.load(f)
    print(data['name'])

执行程序,报错

json.decoder.JSONDecodeError: Extra data: line 1 column 29 (char 28)


注意:在python 3.0版本中,一个文件只允许序列化一次。

举个场景,VMware Workstation软件可以创建多个快照,并且可以恢复到任意的快照。它是怎么做到的呢?就是每个快照,有独立的文件。

所以在Python中,要想序列化多次,必须每次保存的文件是不一样的才行。




--结束END--

本文标题: python Json与pickle数据序列化

本文链接: https://www.lsjlt.com/news/178996.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python Json与pickle数据序列化
    在程序运行的过程中,所有的变量都是在内存中。一旦程序结束,变量所占用的内存就被操作系统全部回收。为了避免数据丢失,把变量从内存中变成可存储或传输的过程称之为序列化序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过...
    99+
    2023-01-30
    序列化 数据 python
  • Python序列化模块JSON与Pickle
    序列化把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flat...
    99+
    2022-11-11
  • 详解Python之数据序列化(json、pickle、shelve)
    一、前言 1. 现实需求 每种编程语言都有各自的数据类型,其中面向对象的编程语言还允许开发者自定义数据类型(如:自定义类),Python也是一样。很多时候我们会有这样的需求: 把内存中的各种数据类型的...
    99+
    2022-06-04
    详解 序列化 数据
  • Python序列化模块之pickle与json详解
    目录序列化模块序列化和反序列化使用场景dumps & loadsdump & loadJSON序列化模块使用场景支持的数据类型JSON和pickle的区别序列化函数j...
    99+
    2022-11-11
  • Python 对象序列化与反序列化之pickle json详细解析
    目录引言picklejson尾语引言 将对象的状态信息转换为可以存储或传输的形式的过程叫作序列化 类似地从序列化后的数据转换成相对应的对象叫作 反序列化 本文介绍 Python 将对...
    99+
    2022-11-12
  • Python序列化模块之pickle与json怎么使用
    本篇内容主要讲解“Python序列化模块之pickle与json怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python序列化模块之pickle与json怎么使用”吧!序列化模块imp...
    99+
    2023-06-30
  • Python的pickle序列化和JSON序列化实例分析
    本文小编为大家详细介绍“Python的pickle序列化和JSON序列化实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的pickle序列化和JSON序列化实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-06-30
  • Python数据序列化之pickle模块
    目录1将Python数据存储为本地文件①存储过程②加载过程2将Python数据存储为程序的一部分①存储过程②加载过程前言: 在英语中 pickle 名词是泡菜,动词是腌渍的意思。可以...
    99+
    2022-11-13
  • Python常用标准库详解(pickle序列化和JSON序列化)
    目录常用的标准库序列化模块序列化和反序列化使用场景dumps & loadsdump & loadJSON序列化模块使用场景支持的数据类型JSON和pickle的区别...
    99+
    2022-11-11
  • Python数据序列化的pickle模块怎么用
    这篇文章主要介绍了Python数据序列化的pickle模块怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数据序列化的pickle模块怎么用文章都会有所收获,下面我们一起来看看吧。前言:在英语中...
    99+
    2023-06-29
  • 如何使用Python中的pickle和JSON进行对象序列化和反序列化
    如何使用Python中的pickle和JSON进行对象序列化和反序列化Python是一种简单而强大的编程语言,其内置了许多有用的库和模块,使开发人员能够快速进行各种任务。其中,pickle和JSON是两个常用的模块,用于对象序列化和反序列化...
    99+
    2023-10-22
    序列化 JSON pickle
  • Python中的json和pickle在数据序列化和反序列化方面的优劣势和性能比较是什么?
    Python中的json和pickle在数据序列化和反序列化方面的优劣势和性能比较序列化是指将数据结构或对象转换为可存储或传输的格式的过程,而反序列化是将已序列化的数据转换回原始对象的过程。Python提供了许多用于序列化和反序列化数据的库...
    99+
    2023-10-22
    Python JSON pickle 关键词:
  • Python json序列化
    Python内置的json模块提供了非常完善的对象到JSON格式的转换。废话不多说,我们先看看如何把Python对象变成一个JSON: d = dict(name='Kaven', age=17, sex='Male') print(j...
    99+
    2023-01-31
    序列化 Python json
  • PythonJson与pickle模块序列化使用介绍
    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功...
    99+
    2022-11-11
  • python序列化:json,pickl
    什么是序列化,把程序中的对象或者变量,从内存中转换为可存储或可传输的过程称为序列化。在 Python 中,这个过程称为 pickling,在其他语言中也被称为 serialization,marshalling,flattening 等。...
    99+
    2023-01-31
    序列化 python pickl
  • C#对JSON与对象的序列化与反序列化
    一、利用Web服务中的JavaScriptSerializer 类 System.Web.Script.Serialization空间,位于System.Web.extensions...
    99+
    2022-11-13
  • python序列化json数据的方法是什么
    这篇“python序列化json数据的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python序列化json数据...
    99+
    2023-06-27
  • JavaScript中怎么用JSON来序列化与反序列化
    小编给大家分享一下JavaScript中怎么用JSON来序列化与反序列化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用JSON...
    99+
    2022-10-19
  • JSON序列化与反序列化NULL值丢失问题
    做项目一般都会有一些特殊的需求,例如保留json中的null值,但是fastjson都会把null值得属性给过滤掉 json序列化保留null值 com.alibaba.fastjson.JSON.toJSONString(list, ...
    99+
    2023-09-14
    java Powered by 金山文档
  • C#使用Json.Net对JSON与对象的序列化与反序列化
    目录一、使用Json.Net1、把DataTable转换成json格式,使用最新Json.Net DLL ,已经内置转换器。2、对Json.Net序列化和反序列化的控制二、空值的处理...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作