1  数据序列化

文件系统,机器学习,大数据等,都少不了数据文件。Python 提供了一些比较方便序列化的存储的组件。

什么是序列化(Serialization)呢,就是把像字典,列表这类的数据,打包保存在电脑硬盘中。

2 pickle

2.1 序列化成一串字节

import pickledata = ['Shanghai','浦东新区','20211206']
pickle.dumps(data)
'''
b'\x80\x03]q\x00(X\x08\x00\x00\x00Shanghaiq\x01X\x0c\x00\x00\x00\xe6\xb5\xa6\xe4\xb8\x9c\xe6\x96\xb0\xe5\x8c\xbaq\x02X\x08\x00\x00\x0020211206q\x03e.'
'''

可以看到这个字典被 pickle 以后,已经面目全非,你不能直接读出来里面的信息,因为这些信息已经被编码了。

所以当你在用 pickle 进行序列化的时候,需要考虑你需不需要能看懂被打包的数据,如果没有这个需求,那你就可以用 pickle。有的话,建议使用后面将要涉及的json。

2.2 序列化成一个文件

import pickledata = ['Shanghai','浦东新区','20211206']
f=open('data.pkl','wb')
pickle.dump(data,f)
f.close()

注意这里一定要是'wb‘,如果是'w'的话,会报如下的错误:

TypeError: write() argument must be str, not bytes

但是这个data.pkl的文件,人是没法直接看懂的:

2.3 反序列化文件

f1=open('data.pkl','rb')
data=pickle.load(f1)
data
'''
['Shanghai', '浦东新区', '20211206']
''''''
对比一下直接read:
'''f=open('data.pkl','rb')
f.read()
'''
b'\x80\x03]q\x00(X\x08\x00\x00\x00Shanghaiq\x01X\x0c\x00\x00\x00\xe6\xb5\xa6\xe4\xb8\x9c\xe6\x96\xb0\xe5\x8c\xbaq\x02X\x08\x00\x00\x0020211206q\x03e.'
'''

3 json

Python 中的 json 库,就是来处理 json 形式的数据的。

一般来说,Python 里的字典,列表都可以是 json 数据格式。

3.1 用json 序列化

import jsondata = ['Shanghai','浦东新区','20211206']
j = json.dumps(data)print(j)
print(type(j))'''
["Shanghai", "\u6d66\u4e1c\u65b0\u533a", "20211206"]
<class 'str'>
'''

相比于pickle,json序列化之后的内容是可读的,变成了一个字符串形式的列表

3.2 序列化至文件

大体用法和pickle一致

import jsondata = ['Shanghai','浦东新区','20211206']f=open('data.json','w')
json.dump(data,f)
f.close()

相比于pickle,内容是可读的

3.3 反序列化文件

大体用法和pickle一致

f=open('data.json','r')
json.load(f)
'''
['Shanghai', '浦东新区', '20211206']
''''''
对比一下read
'''
f=open('data.json','r')
f.read()
'''
'["Shanghai", "\\u6d66\\u4e1c\\u65b0\\u533a", "20211206"]'
'''

4 pickle和json的比较

5 其他序列化

numpy  有专门的 npz格式文件,见:

python包介绍:numpy_UQI-LIUWJ的博客-CSDN博客  第五小节

python 笔记 pickle json相关推荐

  1. 初学者python笔记(json模块、pickle模块、xml模块、shelve模块)

    文章目录 json模块 正常数据转化(复杂) json模块的相关操作 pickle模块 shelve模块 xml模块 在Python中,json模块.pickle模块.xml模块.shelve模块这四 ...

  2. Python 笔记(一)字典与json使用及注意点

    个人笔记系列,随便参考 1.python 中字典与json的差别 字典的生成 >>> a = dict(one=1, two=2, three=3) >>> b = ...

  3. python序列化模块json和pickle

    序列化相关 1. json 应用场景: json模块主要用于处理json格式的数据,可以将json格式的数据转化为python的字典,便于python处理,同时也可以将python的字典或列表等对象转 ...

  4. python中pickle模块的用法_Python中json模块和pickle模块的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中json模块和pickle模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Python中的json模块和pickl ...

  5. Python的pickle模块详解(包括优缺点及和JSON的区别)

    文章目录 一.pickle是什么? 1.pickle的优缺点 2.pickle和JSON的区别 3.pickle的应用总结 二.pickle的用法 1. pickle接口 2. pickle实例 结语 ...

  6. 利用python爬虫(part16)--json解析模块

    学习笔记 json解析模块 json.loads 作用 把json格式的字符串转为Python数据类型. 语法 res = requests.get(url=url, headers=headers) ...

  7. python字符串的美化_shell 下使用python 美化输出json

    原博文 2020-01-07 17:30 − macname@bogon ~ % echo '{"json": "obj"}' | python3.7 -m j ...

  8. Python之Pickle学习

    (1)Pickle的作用: python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的 ...

  9. Python笔记(一)

    Python笔记(一) 从HelloWorld开始学习吧 HelloWorld.py Python中的注释 Python中变量名起名规范 Python中的输出以及格式化 Python中的数据类型 Nu ...

最新文章

  1. git 常用命令以及其他使用笔记
  2. 2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础
  3. xampp mysql 卸载_卸载Xampp并安装apache + mysql + php 过程
  4. 上传图片实时显示 兼容 ie11
  5. MATLAB设置当前工作目录
  6. 以太坊应用网络项目LUKSO通过可逆ICO筹集1800万美元
  7. Enjoy模板里使用layui模板引擎laytpl
  8. dwr(Direct Web Remoting)的使用
  9. Linux下挂载iscsi存储及多路径功能配置
  10. 用文本文档制作bat文件
  11. vb读取mysql数据库数据_VB读取ORACLE数据库的两种方法
  12. 在线教育开源源码:线上教育如今各种“陷阱营销”,应如何规避?
  13. 文件夹被隐藏生成同名.exe文件的文件夹图标病毒你还不会解决?
  14. vue页面引用百度地图怎么让百度logo不显示
  15. 关闭cidaemon进程的方法
  16. 2023王道数据结构P40题二.1,关于是否会断链的问题
  17. ISLR 读书笔记二:评估模型的准确性
  18. 【ICPC-369】uva 12096 The SetStack Computer
  19. vc2010 std::tr1 bind库捉虫记
  20. 如何用计算机组添加打印机共享的打印机,win7如何添加打印机_Win7电脑如何设置打印机家庭组共享?...

热门文章

  1. [Java] System.arraycopy 数组复制
  2. Firefox XUL
  3. 交换机VLAN划分详细手册
  4. Windows下的bat文件的@echo off 作用
  5. 斯坦福大学CS224d基础1:线性代数回顾 Linear Algebra - review
  6. python项目NoReverseMatch: Reverse for ‘topic‘ with arguments ‘(‘‘,)‘ not found解决方法
  7. 算法提高课-图论-有向图的强连通分量-AcWing 367. 学校网络:强连通分量、tarjan算法
  8. leetcode 136. 只出现一次的数字 c语言
  9. python renames_Python os.renames() 方法
  10. Java使用jmeter源码进行接口测试_jmeter用java代码怎样编写接口测试源码