开发者学堂课程【Python 入门 2020年版:Pickle 的使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10406
Pickle 的使用
内容介绍:
一、Pickle 的序列化和反序列化
二、Pickle 的使用(其一)
三、Pickle 的使用(其二)
一、Pickle 的序列化和反序列化
python 里存入数据只支持存入字符串和二进制
json 是将 python 里的数据
( str/list/tuple/dict/int/fLoat/booL/None) 等转换成为对应的 json
pickLe 是将 Python 里任意的对象转换成为二进制,计算机本质上存储的数据、保存的数据、传输的数据等等,不管是什么都是二进制形式,所以不管是什么类型的数据都可以转换成二进制。
pickLe 将数据持久(序列化)有两个方法:
dumps: 将数据转换成为二进制,不会将数据保存到文件里。
dump: 将数据转换成为二进制,同时保存到指定文件。
pickLe 反序列化也有两个方法:
Loads: 将二进制加载成为 Python 数据。
Load: 读取文件,并将文件的二进制内容加载成为 Python 数据。
二、Pickle 的使用(其一)
Pickle 的使用代码情况(其一)如下:
names =["张三",李四·,'杰克',‘亨利']
#可以把它转成这个 json 数据,但是同时也可以把它变成一个二进制。
b_names = pickle.dumps ( names)
#把表格数据转换成二进制形式。
file = open( ' names.txt', ‘wb')
#打开 names.txt 文件,以“wb”的形式读取。
file.write(b_names)
#读取的内容是二进制就以二进制的形式写入,并不是纯文本形式写入。file.close()
#写入后,打开这个文件会发现有很多乱码,这里不管用什么方法都加载不了,因为写入的数据是二进制形式,不是纯文本,这里要求大家不要修改或改动代码,因为此时数据已经写进去了。
file1 = open( ‘names.txt' , 'rb')
#以二进制的形式打开文件 names.txt。
x = file1.read()
#先读出二进制数据。
y = pickle.loads(x)]
#再将二进制数据加载成为 Python 中的列表数据。
print(y)
file1.close()
#关闭文件,就可以重新加载数据。
三、Pickle 的使用(其二)
1.Pickle 的使用代码情况(其二)如下:
file2 = open( ‘names.txt', 'wb')
#打开 names.txt 文件,以“wb”的形式读取。
pickle.dump(names,file2)
#file2 数据加载进去,这一步代码不相当于上面的三步代码:
(file = open( ' names.txt', ‘wb')
file.write(b_names)
file.close( ))
file2.close()
#将数据转成二进制同时写入。
file3 = open( ‘names.txt' , 'rb')
#以二进制的形式打开文件 names.txt。
pickle. load(file3)
#再将数据加载回来,结果是列表形式。
2. Dump、load 的功能十分强大,
下面举一个例子:
class Dog(object):
def _init_(self, name,color):
self.name = name
self.color = color
#对象“狗”的属性有名字和颜色。
def eat(self):
print(self.name + '正在吃东西')
#可以使用 eat 方法。
d = Dog('大黄',‘白色')
#对象“狗”的名字是“大黄”,颜色是“白色”。
pickle.dump(d,open( ' dog.txt' , 'wb'))
#将对象原封不动的以“wb”形式存入文件 dog.txt 中,存入的内容可以直接点击 dog.txt 文件查看。
d = Dog( '大黄',‘白色’)
pickle.dump(d,open( ‘dog.txt ', 'wb'))
dd = pickle.load(open( 'dog.txt' , ‘rb'))
#也可以使用 load 以二进制的形式将数据重新加载回来。
dd.eat()
print(dd.name)
print(dd.color)
#存进去的数据,重新从文件中被加载出来是完全相同的。
保存了内存里面的数据,把数据直接储存起来,以前有什么属性,储存后就有什么属性,会原封不动的保存下来,以上是我们说的 Pickle 和 json 的使用方法。