Python3 pickle模块序列化&反序列化

  • 1.简介

pickle是python语言的一个标准模块,安装python后已包含pickle库,不需要单独再安装。

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化,

pickle序列化后的数据,可读性差,人一般无法识别

  • 2.Pickle模块中最常用的函数

  1.pickle.dump(obj, file, [,protocol])

     函数说明:接受一个文件句柄和一个数据对象作为參数,把数据对象obj以特定的格式保存到给定的文件file里。

  • obj:想要序列化的obj对象。
  • file:文件名称。
  • protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

     2.pickle.load(file):

     函数说明:将file中的对象序列化读出。

  • file:文件名称。

代码示例:

import pickle


class Dog:
    def __init__(self, age, name):
        self.age = age
        self.name = name

    def show(self):
        print(self.name + ' is ' + str(self.age) + ' years old')


file_tom = './tom.txt'
tom = Dog(3, 'Tom')
tom.show()
with open(file_tom, 'wb') as f:
    pickle.dump(tom, f)

with open(file_tom, 'rb') as f:
    kit = pickle.load(f)
    kit.show()

   

3.pickle.dumps(obj[, protocol])

    函数说明:将obj对象序列化为string形式,而不是存入文件中。

  • obj:想要序列化的obj对象。
  • protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

    4.pickle.loads(string)

    函数说明:从string中读出序列化前的obj对象。

  • string:字符串

代码示例

import pickle

# 原始列表
l1 = ['apple', 'banana', 'orange']
# dumps序列化
str1 = pickle.dumps(l1)
print(str1)

# loads 反序列化
print(pickle.loads(str1))

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值