Python序列化模块JSON与Pickle

Python序列化模块JSON与Pickle

序列化是将数据结构或对象转换为序列化的格式,以便它可以存储或传输。Python提供了两个标准序列化模块,即JSON和Pickle。JSON模块序列化的结果是字符串,它适用于网络传输,而Pickle模块序列化的结果是二进制,它适用于本地存储。

JSON模块

JSON是一种轻量级数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。

JSON序列化模块提供了四个功能:dumps、dump、loads、load。其中,dumps接受一个Python对象并将其转换为JSON字符串,dump也接受一个Python对象,然后将其转换为JSON格式,并存储在文件对象中。loads接受一个JSON格式的字符串并返回一个Python对象,load也是类似的功能,只是从文件对象中读取JSON格式的数据。

示例1

import json

person = {
    'name': 'Tom',
    'age': 20,
    'isMarried': False,
    'hobbies': ['swimming', 'reading']
}

# 将python对象person序列化为JSON字符串
json_str = json.dumps(person, indent=4)

print(json_str)

示例2

import json

person = {
    'name': 'Tom',
    'age': 20,
    'isMarried': False,
    'hobbies': ['swimming', 'reading']
}

# 将python对象person序列化为JSON格式并将其写入文件中
with open('person.json', 'w') as f:
    json.dump(person, f)

# 从文件中读取JSON数据并反序列化为python对象
with open('person.json', 'r') as f:
    data = json.load(f)

print(data['name'])
print(data['age'])
print(data['hobbies'])

Pickle模块

Pickle是Python的一个序列化模块,它将Python对象序列化为二进制格式,并在需要时将其反序列化回来。相对于JSON序列化模块,Pickle能够处理更多的Python对象类型,但其序列化后的数据无法被其他语言解析。

Pickle序列化模块提供了四个功能:dumps、dump、loads、load,和JSON序列化模块的用法非常相似。

示例1

import pickle

person = {
    'name': 'Tom',
    'age': 20,
    'isMarried': False,
    'hobbies': ['swimming', 'reading']
}

# 将python对象person序列化为二进制数据
binary_data = pickle.dumps(person)

print(binary_data)

# 将二进制数据反序列化为python对象
data = pickle.loads(binary_data)

print(data['name'])
print(data['age'])
print(data['hobbies'])

示例2

import pickle

person = {
    'name': 'Tom',
    'age': 20,
    'isMarried': False,
    'hobbies': ['swimming', 'reading']
}

# 将python对象person序列化为二进制格式并将其写入文件中
with open('person.pickle', 'wb') as f:
    pickle.dump(person, f)

# 从文件中读取二进制数据并反序列化为python对象
with open('person.pickle', 'rb') as f:
    data = pickle.load(f)

print(data['name'])
print(data['age'])
print(data['hobbies'])

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python序列化模块JSON与Pickle - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python嵌套循环的使用

    下面是Python嵌套循环的使用攻略。 什么是Python嵌套循环 嵌套循环指的是在一个循环语句中再嵌套另一个循环语句,一个循环语句的执行取决于其内嵌的循环。 嵌套循环一般用来处理多维数据或需要对数据进行组合枚举等操作。Python中嵌套循环有两种常见类型:for-in嵌套循环和while嵌套循环。 for-in嵌套循环 for-in嵌套循环中,外层循环只会…

    python 2023年6月5日
    00
  • 详解Python 合并词典的几种方式

    Python中实现合并词典(字典)有多种方式,下面将详细讲解几种常见的方法及其使用方法。 方法一:update方法 update() 方法可用于将一个词典中的键/值对更新到另一个词典中。如果被更新的词典中存在相同的键,那么它们的值将被替换为新的值。 语法 dict1.update(dict2) 示例说明 下面是一个例子,演示如何合并两个词典,并输出合并后的结…

    python-answer 2023年3月25日
    00
  • Python – 解决这个问题的干净方法?

    【问题标题】:Python – a clean approach to this problem?Python – 解决这个问题的干净方法? 【发布时间】:2023-04-03 05:47:01 【问题描述】: 我无法选择解决问题的最佳数据结构。 问题如下: 我有一个嵌套的身份代码列表,其中子列表的长度不同。 li = [[‘abc’, ‘ghi’, ‘lm…

    Python开发 2023年4月8日
    00
  • Python如何生成树形图案

    生成树形图案是一个很有趣的编程问题,Python通过使用递归函数实现这个功能非常容易,下面是生成树形图案的完整攻略: 1.确定树形图案的形状 首先,我们要确定树形图案的形状,比如,树形图案是一个三角形,如下图所示: * *** ***** ******* ********* *********** ************* 或者树形图案是一个倒三角形,如下…

    python 2023年6月3日
    00
  • Python简单爬虫导出CSV文件的实例讲解

    首先我们需要明确一下,网页爬虫是用来从互联网上抓取数据的一种程序。而CSV是一种常用的数据格式,它是一种简单的、基于文本的表格表示方法,用于表示由逗号分隔的值(即CSV文件)。 那么,如何在Python中编写一个简单的爬虫程序,并将爬取到的数据导出为CSV文件呢?下面我会详细介绍。 一、准备工作 在开始编写爬虫程序之前,我们需要安装一些必要的Python库,…

    python 2023年6月3日
    00
  • Python中plt.scatter()函数的常见用法小结

    当使用Python进行数据可视化时,常会用到matplotlib这个包。其中的plt.scatter()函数就是用来绘制散点图的。本文将对plt.scatter()函数的常见用法进行小结。 1. plt.scatter()函数的基本用法 plt.scatter()函数的基本语法如下: plt.scatter(x, y, s=None, c=None, mar…

    python 2023年6月3日
    00
  • 全面分析Python的优点和缺点

    全面分析Python的优点和缺点 优点 简单易学:Python语法简洁清晰,语言结构非常简单,易于学习。 开发效率高:Python拥有丰富的类库和开发工具,可以极大地提高开发效率。 跨平台性好:Python是一款跨平台语言,可以在Windows、Linux、Mac OS等多种操作系统上运行,具有良好的可移植性。 大量第三方库:Python拥有大量的第三方库,…

    python 2023年5月30日
    00
  • python中的闭包用法实例详解

    让我给您详细讲解“python中的闭包用法实例详解”。 什么是闭包? 闭包是指函数对象可以访问其词法作用域外的变量的能力。具体来说,闭包是一个嵌套函数,并且它可以引用其环境的变量。在Python中,闭包是一种函数式编程方式,它可以让我们使用高阶函数和装饰器。 闭包的基本语法 在Python中,闭包函数的基本语法如下: def outer_function()…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部