无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(Python pickle模块) Python pickle函数详解:对象的持久化存储 Python中的Pickle模块 全网首发(图文详解1)

前沿技术 Micheal 6个月前 (05-28) 80次浏览 已收录 扫描二维码

(Python pickle模块) Python pickle函数详解:对象的持久化存储

Python中的pickle模块是一个可用来在文件之间共享对象和重用对象的模块。它的持久化存储的功能是通过将对象序列化然后保存到磁盘中实现,或者通过网络协议来传输。

pickle模块提供了四个功能:dump、dumps、load、loads。

  • pickle.dump(obj, file, protocol=None, *, fix_imports=True): 这个方法可以将对象序列化并保存到file中去。参数obj是要序列化的对象,file是保存序列化对象的文件,protocol是指定序列化使用的协议。
  • pickle.dumps(obj, protocol=None, *, fix_imports=True): 这个方法可以将对象序列化为字符串。参数和dump方法类似。
  • pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict"): 这个方法是从file中读取字符串,并返回该字符串反序列化后的对象。
  • pickle.loads(s, *, fix_imports=True, encoding="ASCII", errors="strict"): 这个方法是将字符串反序列化为对象。

这就是pickle模块提供的基础功能,其实用法也并不复杂。接下来是一个简单的例子:

import pickle

# 这是我们要序列化的对象
data = {
    'a': [1, 2.0, 3, 4+6j],
    'b': ("character string", b"byte string"),
    'c': {None, True, False}
}

# 使用dump方法进行序列化
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)

然后,我们可以用以下代码来反序列化刚才保存的对象:

import pickle

# 使用load方法进行反序列化
with open('data.pickle', 'rb') as f:
    data = pickle.load(f)

print(data)

程序执行完毕后,就会在控制台上打印出刚才保存的数据。

一点需要注意的是,pickle序列化的数据在跨语言、跨平台时可能会遇到问题,因此在这种情况下,更推荐使用json或者xml进行数据的序列化和反序列化。
(前端限制) http请求报错:413 Payload Too Large的原因和解决办法 413 Payload Too Large:HTTP 请求报错解决方案 全网首发(图文详解1)
(421) http请求报错:421 Misdirected Request的原因和解决办法 HTTP错误421:Misdirected Request原因和解决方法 全网首发(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝