序列化模块2 pickle
import pickle
# dump的结果是bytes,dump用的f文件句柄需要以wb的形式打开,load所用的f是'rb'模式
# 支持几乎所有对象的序列化
# 对于对象的序列化需要这个对象对应的类在内存中
# 对于多次dump/load的操作做了良好的处理
dic = {1:(1,2,3),('a','b'):4}
#序列化
pic_dic = pickle.dumps(dic)
print(pic_dic) # bytes类型
#反序列化
new_dic = pickle.loads(pic_dic)
print(new_dic)
# pickle支持几乎所有对象
class Student:
def __init__(self,name,age):
self.name = name
self.age = age
# 实例化一个对象
ben = Student('ben',13)
pic_ben = pickle.dumps(ben) # 序列化对象
print(pic_ben)
new_ben = pickle.loads(pic_ben) #反序列化对象
print(new_ben.name) # 对象.属性
print(new_ben.age) # 对象.属性
# 处理文件
class Teacher:
def __init__(self,name,age):
self.name = name
self.age = age
# 实例化一个对象
carl = Teacher('张三',38) with open('pic_demo','wb') as f1:
pickle.dump(carl,f1) # 序列化对象 with open('pic_demo','rb') as f2:
ret = pickle.load(f2) # ret是反序列化后得到的对象
print(ret.name) #对象调用属性 name
# 对于多次dump/load的操作做了良好的处理
with open('pic_demo','wb') as f1:
pickle.dump('赵六',f1)
pickle.dump({'k1':'vi'},f1)
pickle.dump((1,2,3),f1)
pickle.dump(['a','b',[1,2,('qq',1)]],f1)
with open('pic_demo','rb') as f1:
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# print(pickle.load(f1))
# 超出范围,报错,EOFError: Ran out of input
#不知道里面有多少内容,用while 循环
while True: # 异常判断
try:
print(pickle.load(f1))
except EOFError:
break
序列化模块2 pickle的更多相关文章
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python序列化模块 json&&pickle&&shelve
#序列化模块 #what #什么叫序列化--将原本的字典.列表等内容转换成一个字符串的过程叫做序列化. #why #序列化的目的 ##1.以某种存储形式使自定义对象持久化 ##2.将对象从一个地方传递 ...
- 序列化模块之 pickle 和 json
用于序列化的两个模块: json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps ...
- Day 21 序列化模块_Json,Pickle,Shelve
序列化 , 数据类型,列表 元组, 字符串 只有字符串能被写入文件中. 能在网络上传输的只能是bytes - 字符串 把要传输的和要存储的内容转换成字符串. 字符串 转换回 要传输和存储的内容 序列化 ...
- 序列化模块组 pickle,json , xml , shelve , configparser
序列化是什么? 序列化指的是将内存中的数据结构转化为一种中间格式 并存储到硬盘上. 反序列化是什么? 将硬盘上存储的中间格式数据再还原为内存中的数据结构. 为什么要有序列化? 是为了将数据持久存储 较 ...
- python之模块random,time,os,sys,序列化模块(json,pickle),collection
引入:什么是模块: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类型. 1.使用python编写的代码(.py ...
- python之序列化模块、双下方法(dict call new del len eq hash)和单例模式
摘要:__new__ __del__ __call__ __len__ __eq__ __hash__ import json 序列化模块 import pickle 序列化模块 补充: 现在我们都应 ...
- 序列化模块1 json
......得到一个 字符串 的结果 过程就叫序列化 字典 / 列表 / 数字 /对象 -序列化->字符串 为什么要序列化 # 1.要把内容写入文件 序列化 # 2.网络传输数据 序列化 字符串 ...
随机推荐
- Binary Search-483. Smallest Good Base
For an integer n, we call k>=2 a good base of n, if all digits of n base k are 1. Now given a str ...
- Alamofire源码导读五:错误表示
AFError is the error type returned by Alamofire. It encompasses a few different types of errors, eac ...
- PriorityQueue实现大顶堆
在做一道算法时需要使用大顶堆,所以查了一下记录. 使用PriorityQueue实现大顶堆 PriorityQueue默认是一个小顶堆,然而可以通过传入自定义的Comparator函数来实现大顶堆.如 ...
- word转html 压缩图片网站
word转html https://docs.google.com/document/d/1MS-os1NcEPSEe2OWRenGR_6CsEmEQUchoQoh-abmL1Y/edit 压缩图片 ...
- R软件常用命令
1.getwd() 获取默认的目录 2.> mydata <- read.csv("1.csv") 读取1.csv文件中的数据,并赋值给一个mydata的对 ...
- 1301班 github安装及账户注册
1.下载github 下载地址: http://git-scm.com/download/ 2.账号注册 进入:mukever.online 在右下角的“New user? Create an acc ...
- python中del函数的垃圾回收
今天学习面向对象里的类被del函数的垃圾回收过程搞的晕头转向,经过了老师的讲解还是是懂非懂,然后看了很多博客慢慢的心里才有了个大概的了解. 刚刚看到一篇博客,觉得讲的很好,转载过来以供参考.以下转自笨 ...
- django第四课 标签的用法(if/else、for、ifequal、过滤器、注释等)
if/else {% if %} <p>内容</P> {% endif %} {% else %}是可选标签 {% if %} <p>内容</P> {% ...
- C#的SubString(int start,int end);
C#的SubString(); 例子: string str = "i am a girl"; string temp = str.Substring(2,2);//从索引2开始, ...
- Python远程连接主机之paramiko模块
Python的paramiko模块能够连接远程主机,并在该主机上执行命令,和该主机之间进行文件传输.paramiko支持用明文密码登录远程主机和秘钥登录.使用之前要安装一下这个模块哈,pip inst ...