面向对象和pickle模块结合
面向对象和pickle模块相关
1.面向对象:
class 类名:
def init(self,参数1,参数2):
self.对象的属性1 = 参数1
self.对象的属性2 = 参数2
def 方法名(self):pass
def 方法名2(self):pass
对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西
2.pickle模块:
只能是Python语言遵循的一种数据转化格式,只能在python语言中使用。
支持Python所有的数据类型,包括实例化对象。pickle模块是将Python所有的数据结构以及对象等转化成bytes类型,然后还可以反序列化还原回去。
用于网络传输:dumps、loads
用于文件写读:dump、load

3.面向对象和pickle模块结合:
1.使用pickle存取自定义类的对象的方式
#前提:必须有类
#通过pickle 存储和读取对象
class Course:
def __init__(self,name,period,price):
self.name = name
self.period = period
self.price = price
python = Course('python','6 week',1800)
linux = Course('linux','5 week',1500)
go = Course('go','4 week',1200)
import pickle
with open('pickle_file','ab') as f:
pickle.dump(python,f)
pickle.dump(linux,f)
pickle.dump(go,f)
with open('pickle_file','rb') as f:
while True:
try:
obj = pickle.load(f)
print(obj.name,obj.period,obj.price)
except EOFError:
break
2.自定义Pickle,借助pickle模块来完成简化的dump和load
# pickle dump
# 打开文件
# 把数据dump到文件里
# pickle load
# 打开文件
# 读数据
# 对象 = Mypickle('文件路径')
# 对象.load() 能拿到这个文件中所有的对象
# 对象.dump(要写入文件的对象)
##1:
import pickle
class Mypickle:
def __init__(self,path):
self.file = path
def dump(self,obj):
with open(self.file, 'ab') as f:
pickle.dump(obj, f)
def load(self):
with open(self.file,'rb') as f:
while True:
try:
yield pickle.load(f)
except EOFError:
break
pic = Mypickle('pickle_file')
s1 = Stack() #利用上面的栈
s1.put('aaa')
s1.put(123)
s1.put(456)
pic.dump(s1)
s2 = Stack()
s2.put('bbb')
s2.put(888)
s2.put(999)
pic.dump(s2)
for i in pic.load():
print(i.l)
# ['aaa', 123, 456]
# ['bbb', 888, 999]
##2: load(self)与上面略有不同
import pickle
class Mypickle:
def __init__(self,path):
self.file = path
def dump(self,obj):
with open(self.file, 'ab') as f:
pickle.dump(obj, f)
def load(self):
l = []
with open(self.file,'rb') as f:
while True:
try:
l.append(pickle.load(f))
except EOFError:
break
return l
pic = Mypickle('pickle_file')
pic.dump('aaa')
pic.dump('bbb')
ret = pic.load()
print(ret)
#['aaa', 'bbb']
面向对象和pickle模块结合的更多相关文章
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- [转]python pickle模块
持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...
- sys模块&json模块&pickle模块
sys模块&json模块&pickle模块 sys模块 一.导入方式 import sys 二.作用 与Python解释器交互 三.模块功能 3.1 经常使用 sys.path #返回 ...
- 序列化 pickle模块
1. pickle 简介 2. pickle 核心函数 3. pickle 高级 -- 复杂对象 1. 持久化与 pickle 简介 1.1 什么是持久化? 持久化的基本思想很简单.假定有一个 Pyt ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- 【python】pickle模块
持久性的基本思想很简单.假定有一个 Python 程序,它可能是一个管理日常待办事项的程序,您希望在多次执行这个程序之间可以保存应用程序对象(待办事项).换句话说,您希望将对象存储在磁盘上,便于以后检 ...
- python数据持久存储:pickle模块的基本使用
经常遇到在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据. 这个时候Pickle模块就派上用场了,它可以将对象转换 ...
- python数据持久存储:pickle模块的使用
python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...
- Python(正则 Time datatime os sys random json pickle模块)
正则表达式: import re #导入模块名 p = re.compile(-]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表 ...
随机推荐
- vs中debug的一个小技巧 -- debug时忽略某段代码
#line 这是C#中的预处理命令 Visual Studio 2008 Visual Studio 2005 Visual Studio 2012 #line hidden 指令对调试器隐藏若干连续 ...
- KM算法 详解+模板
先说KM算法求二分图的最佳匹配思想,再详讲KM的实现.[KM算法求二分图的最佳匹配思想] 对于具有二部划分( V1, V2 )的加权完全二分图,其中 V1= { x1, x2, x3, ... , x ...
- 为了考PMP,我做了一个刷题小程序
一.背景 1.我是一名软件工程师,技术出身,担任开发组长,对项目管理不是很熟,所以决定系统学习下项目管理. 2.全球最适合的项目管理学习课程就是PMP,每年有4次PMP考试,证书还是很有含金量的. 3 ...
- 再说Java集合,subList之于ArrayList
上一章说了很多ArrayList相关的内容,但还有一块儿内容没说到,那就是subList方法.先看一段代码 public static void testSubList() { List<Str ...
- 如何使用jQuery可以让滚轮滚到底部可以自动加载所需内容
话不多说先上代码 $(window).scroll(function() { var scrollTop = $(this).scrollTop(); //滚动高度 var windowHeig ...
- win10安装docker
配置首先需要Hyper-v和容器,这样就可以运行Linux的镜像了 如果是win10home版或者是其他版本就需要安装visulbox了, 然后去官网https://www.docker.com/pr ...
- Python自学day-6
一.编程范式 编程:程序员用特定的语法.数据结构和算法告诉计算机如何执行任务的过程.实现任务有很多不同的方式,根据编程方式的特点进行归纳总结出来的编程方式类别,就叫编程范式.大多数语言只支 ...
- JavaScript学习笔记(2)
常用对象 Boolean Number String Array 数组 Date 日期 Math 数字 RegExp 正则 Global 全局 函数 var m = function(){} 事件 o ...
- chrome如何查看cookie
以mac为例: 第一步:点击chrome的偏好设置 第二步:点击如下图所示的最下面的高级 第三步:点击内容设置,如下所示 第四步:点击cookie,就会出现查看所有cookie和网站数据
- 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用ApplicationPart动态加载控制器和视图
标题:从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图 作者:Lamond Lu 地址:http://www.cnblogs ...