博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 序列化
阅读量:6093 次
发布时间:2019-06-20

本文共 1419 字,大约阅读时间需要 4 分钟。

1. 序列化定义

  • 把对象(变量)从内存中变成可存储或传输的过程称之为序列化, 在Python中叫pickling,其他语言中称之为serialization等;
  • 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上;
  • 把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling;
# 示例一:将字典写入到文件中dic = str({'1':'111'})f = open('test', 'w')f.write(dic)    # 写入失败:write() argument must be str, not set# 示例二: 读入文件中的字典f.open('test', 'r')data = f.read()print(eval(data)['1'])    # 此处,需要将data使用 eval()函数进行转换

2. JSON

# 示例一: 序列化import jsondic = {'name': '小虎', 'age': '19'}data = json.dumps(dic)f = open('JSON_text', 'w')f.write(data)f.close()# 使用 dumpf = open('JSON_text', 'w')json.dump(dic, f)f.close()# 示例二: 反序列化import jsonf = open('JSON_text', 'r')data = f.read()data = json.loads(data)print(data['name'])# 使用 loadf = open('JSON_text', 'r')data = json.load(f)print(data['name'])

3. pickle

  • pickle 模块基本上功能使用和JSON模块没有太大区别;
  • pickle 不是用于多种语言间的数据传输,它仅作为python对象的持久化或python程序间进行互相传输对象的方法;
# 示例一: 序列化import pickledef foo():    print('ok')data = pickle.dumps(foo)f = open('PICKLE_text', 'wb')   # wb  write bytef.write(data)f.close()# 示例二: 反序列化import pickledef foo():    print('ok')f = open('PICKLE_text', 'rb')data = f.read()data = pickle.loads(data)data()

4. shelve 模块

  • shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是
    Python所支持的数据类型。
# 示例:# 序列化import shelvef = shelve.open(r'shelve.txt')f['info'] = {'name':'lisi', 'age': '14'}# 反序列化f = shelve.open('shelve.txt')print(f.get('info'))

参考资料:

转载于:https://www.cnblogs.com/linkworld/p/8613148.html

你可能感兴趣的文章
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
CCF201612-1 中间数(解法二)(100分)
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
PHP下使用Redis消息队列发布微博
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
执行存储过程返回游标集合转换成List
查看>>
(SQL)比较一个集合是否在另一个集合里存在的方法
查看>>
8. 多态——编译时类型&运行时类型
查看>>
逻辑运算
查看>>
Load Balanced 2
查看>>
Angular : 响应式编程, 组件间通信, 表单
查看>>
Python 软件开发目录规范
查看>>
修改OEM SYSMAN密码
查看>>
eclipse的maven、Scala环境搭建
查看>>
Redis配置集群二(window)
查看>>