模块讲解----pickle模块(只在python用的序列化与反序列化)
特点
import pickle
#dumps
li = [11,22,33]
r = pickle.dumps(li)
print(r) #loads
result = pickle.loads(r)
print(result)
二、文本中操作:
#dump:
li = [11,22,33]
pickle.dump(li,open('db','wb')) #load
ret = pickle.load(open('db','rb'))
print(ret)
三、练习:
pickle的序列化:
格式:pickle.dumps(序列化对象)
#!/usr/bin/env python
# -*- coding:utf8 -*-
# Author:Dong Ye import pickle test = r'test.txt' #反序列化代码中也要定义相同的函数名称,函数体没限制
def sayhi(name):
print("hello",name) info = {
'':'',
'age':32,
'func':sayhi
} print(pickle.dumps(info)) with open(test,'wb') as f:
f.write( pickle.dumps(info) )
pickle返序列化:
格式:pickle.loads(读取文件逐行记录)
#!/usr/bin/env python
# -*- coding:utf8 -*-
# Author:Dong Ye import pickle test = r'test.txt' #需要定义序列化代码中同样的函数名,函数体没限制
def sayhi(name):
print("hello",name)
print("hello2",name) with open(test,'rb') as f:
data = pickle.loads(f.read())
print('data>>>',data) print(data['func']("Alex")) 显示结果:
data>>> {'': '', 'age': 32, 'func': <function sayhi at 0x00000000007DF1E0>}
hello Alex
hello2 Alex
None 注意:
1、print(data['func']("Alex"))时,调用了pickle的反序列化变量data。 2、需要在序列化和反序列化定义相同的函数名称,但内容可以不一样。否则报错如下:
E:\python35\python.exe D:/软件/pychar/data/s13/序列化与反序列化/pickle反序列化.py
Traceback (most recent call last):
File "D:/软件/pychar/data/s13/序列化与反序列化/pickle反序列化.py", line 16, in <module>
data = pickle.loads(f.read())
AttributeError: Can't get attribute 'sayhi' on <module '__main__' from 'D:/软件/pychar/data/s13/序列化与反序列化/pickle反序列化.py'>
原因是反序列化脚本中,没有sayhi函数的内存地址: 3、由于pickle序列化是序列了整个对象,而非某个内存地址,因此在反序列化时,也调用了整个序列对象。所以反序列化对象时,sayhi函数的函数体可以不一样。
写入文件并序列化
import pickle test = r'test.txt' #反序列化代码中也要定义相同的函数名称,函数体没限制
def sayhi(name):
print("hello",name) info = {
'':'',
'age':32,
'func':sayhi
} print(pickle.dumps(info)) with open(test,'wb') as f:
#f.write( pickle.dumps(info) )
pickle.dump(info,f) #跟上面的f.write( pickle.dumps(info) )语意完全一样。
import pickle test = r'test.txt' #需要定义序列化代码中同样的函数名,函数体没限制
def sayhi(name):
print("hello",name)
print("hello2",name) with open(test,'rb') as f:
# data = pickle.loads(f.read())
data = pickle.load(f) #跟上面的data = pickle.loads(f.read())语意完全一样。
print('data>>>',data) print(data['func']("Alex"))
模块讲解----pickle模块(只在python用的序列化与反序列化)的更多相关文章
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...
- python中序列化json模块和pickle模块
内置模块和第三方模块 json模块和pickle 模块(序列化模块) 什么是序列化? 序列化就是将内粗这种的数据类型转成另一种格式 序列化:字典类型——>序列化——>其他格式——>存 ...
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)
Python 入门之 内置模块 -- 序列化模块(json模块.pickle模块) 1.序列化 Python中这种序列化模块有三种: json模块 : 不同语言都遵循的一种数据转化格式,即不同 ...
- Python库:序列化和反序列化模块pickle介绍
1 前言 在“通过简单示例来理解什么是机器学习”这篇文章里提到了pickle库的使用,本文来做进一步的阐述. 通过简单示例来理解什么是机器学习 pickle是python语言的一个标准模块,安装pyt ...
- python学习第四十八天json模块与pickle模块差异
在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点 跨语言,体积小 缺点 只能支持 int st ...
- json模块和pickle模块
json模块和pickle模块 一.json模块 作用:用python写了一个程序,用java写了一门程序,这两个程序需要数据之间交流,就产生了一种多种语言通用的数据类型,json串. 序列化:把对象 ...
- Json模块和Pickle模块的使用
在对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块.这两个模块主要区别如下: json 是一个文本序列化格 ...
- python类库32[序列化和反序列化之pickle]
一 pickle pickle模块用来实现python对象的序列化和反序列化.通常地pickle将python对象序列化为二进制流或文件. python对象与文件之间的序列化和反序列化: pi ...
随机推荐
- 多线程局部变量之threading.local()用法
假如,开了十个线程并且做同样的一件事,他们需要带着自己的数据进来,完成事情后带着自己的数据出去.如果是并发,同时进来,他们的数据就会混乱. 一般情况,我们加锁就可以了,一个人先进来,先加锁,另一个人过 ...
- 02Modify.ashx(修改班级信息)
02Modify.html 修改 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> & ...
- linux内核添加模块
参考: http://blog.csdn.net/gaoguoxin2/article/details/50220665 动态添加模块不需要编译内核. LINUX的模块主要由6部分组成: 1.模块的加 ...
- 用工厂模式解决ASP.NET Core中依赖注入的一个烦恼
这是最近在实际开发中遇到的一个问题,用 asp.net core 开发一个后端 web api ,根据指定的 key 清除 2 台 memcached 服务器上的缓存.背景是我们在进行 .net co ...
- [No0000146]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈3/4
前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...
- Hive之变量和属性
首先看一下hive cli工具对于变量的定义规定的几项功能: $ bin/hive -h usage: hive -d,--define <key=value> Vari ...
- RabbitMQ消息可靠性
那些情况会失败 网络问题有很多原因出发失败.防火墙也可能会中断Idle连接,网络失败不是很快确定的. 硬件和软件也会导致系统崩溃.客户端软件保持运行,而逻辑错误也可能会导致channel和connec ...
- ADO多线程数据库总结
ADO多线程数据库查询通常会出现以下问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...
- 【PyQt5-Qt Designer】工具箱(QToolBox)用法讲解
QToolBox() 实现抽屉效果 总体介绍: QToolBox类提供了一列选项卡的小部件(选项卡内含项目). 工具箱是一个小部件,它将选项卡一个一个的显示,当前项目显示在当前选项卡下方.每个选项卡在 ...
- MySQL Community Server 8.0.11下载与安装配置
一.下载 1.选择合适的安装包,我在这里下载的是目前最新的安装包,8.0.11,而且我选择下载的是解压版的,安装版的话,安装会比较麻烦. MySQL Community Server下载链接:http ...