Python序列化基础知识(json/pickle)

作者:fansik 时间:2021-04-24 01:09:34 

     我们把对象(变量)从内存中变成可存储的过程称之为序列化,比如XML,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

    序列化后,就可以把序列化后的内容写入磁盘,或者通过网络传输到其他服务器上,反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling

json(JavaScript Object Notation)

    一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

    如果我们要在不同的变成语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输,JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便,JSON表示的对象就是标准的JavaScript语言的对象。

使用方法如下:


import json
# 序列化写(json.dumps())
with open('test.txt', 'w') as f:
 f.write(json.dumps(dic))
# 序列化读(json.loads)
with open('test.txt', 'r') as f:
 print(json.loads(f.read()))

import json
dic = {'name': 'fanjinbao'}
# 序列化写(json.dump())
with open('test.txt', 'w') as f:
 json.dump(dic, f)
# 序列化读(json.load())
with open('test.txt', 'r') as f:
 print(json.load(f))

pickle

    python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。cPickle是pickle模块的C语言编译版本相对速度更快。与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

pickle反序列化后的对象与原对象是等值的副本对象,类似与deepcopy。

使用方法如下:


import pickle
dic = {'name': 'fanjinbao'}
# 序列化写(pickle.dump())
with open('test.txt', 'wb') as f:
 f.write(pickle.dumps(dic))
# 序列化读(pickle.loads())
with open('test.txt', 'rb') as f:
 print(pickle.loads(f.read()))

import pickle
dic = {'name': 'fanjinbao'}
# 序列化写(pickle.dump())
with open('test.txt', 'wb') as f:
 pickle.dump(dic, f)
# 序列化读(pickle.load())
with open('test.txt', 'rb') as f:
 print(pickle.load(f))

来源:http://www.cnblogs.com/fansik/p/7692201.html

标签:Python,序列化
0
投稿

猜你喜欢

  • python geopandas读取、创建shapefile文件的方法

    2022-09-23 16:57:19
  • python类和继承用法实例

    2021-07-24 17:31:30
  • python进阶教程之文本文件的读取和写入

    2023-08-03 03:27:47
  • 如何使用pycharm连接Databricks的步骤详解

    2023-01-28 23:19:03
  • Python字符串格式化f-string多种功能实现

    2021-01-09 22:56:45
  • 学好python基本数据类型

    2023-07-24 21:48:40
  • 使用python实现kmean算法

    2022-09-17 13:07:22
  • Mysql实战练习之简单图书管理系统

    2024-01-17 14:09:32
  • 操作Dom节点实现间歇滚动新闻

    2009-10-16 20:51:00
  • SQL高级应用之使用SQL查询Excel表格数据的方法

    2024-01-23 09:24:39
  • 编写SQL Server的扩展存储过程实例

    2009-01-20 15:45:00
  • 用Python将结果保存为xlsx的方法

    2021-10-22 22:59:34
  • apache部署python程序出现503错误的解决方法

    2022-01-12 20:37:21
  • pycharm运行scrapy过程图解

    2022-07-19 19:30:20
  • Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释

    2022-06-01 11:09:45
  • 互联网产品设计师自我介绍

    2009-04-16 12:45:00
  • python回溯法实现数组全排列输出实例分析

    2023-06-18 20:42:27
  • go mod 使用私有gitlab群组的解决方案

    2024-05-22 10:29:28
  • 如何在页面错误时向数据库中添加记录?

    2010-06-26 12:26:00
  • 教你快速上手Selenium爬虫,万物皆可爬

    2022-01-02 18:44:31
  • asp之家 网络编程 m.aspxhome.com