“Python pickle”的版本间的差异

来自wrc's Wiki
跳到导航 跳到搜索
 
(未显示同一用户的3个中间版本)
第1行: 第1行:
Python 的对象序列化库。
+
[[Python]] 的对象序列化库。
  
 
== 例子 ==
 
== 例子 ==
  
使用 <code>open</code> 的 {{code|python|'rb'}} 参数来防止 <code>UnicodeDecodeError</code> <ref>https://stackoverflow.com/a/32957860/10974106</ref>
+
=== 防止 <code>UnicodeDecodeError</code> ===
 +
 
 +
使用 <code>open</code> 的 {{code|python|'rb'}} 参数。<ref>https://stackoverflow.com/a/32957860/10974106</ref>
 
<syntaxhighlight lang=python>
 
<syntaxhighlight lang=python>
 
import pickle
 
import pickle
 
obj = pickle.load(open('./obj.dump', 'rb'))
 
obj = pickle.load(open('./obj.dump', 'rb'))
 +
</syntaxhighlight>
 +
 +
=== Load 到一个类 ===
 +
 +
<ref>[https://docs.python.org/3/library/pickle.html#pickling-class-instances Pickling Class Instances]</ref>
 +
<syntaxhighlight lang=python>
 +
class Obj:
 +
    @classmethod
 +
    def load(cls, attributes):
 +
        obj = cls.__new__(cls)
 +
        obj.__dict__.update(attributes)
 +
        return obj
 +
 +
s = Obj.load(pk.load(open('./obj.dump', 'rb')))
 
</syntaxhighlight>
 
</syntaxhighlight>
  
第21行: 第37行:
 
<references />
 
<references />
  
[[Category:Python]]
+
[[Category:Python|P]]

2021年5月17日 (一) 20:52的最新版本

Python 的对象序列化库。

例子

防止 UnicodeDecodeError

使用 open'rb' 参数。[1]

import pickle
obj = pickle.load(open('./obj.dump', 'rb'))

Load 到一个类

[2]

class Obj:
    @classmethod
    def load(cls, attributes):
        obj = cls.__new__(cls)
        obj.__dict__.update(attributes)
        return obj

s = Obj.load(pk.load(open('./obj.dump', 'rb')))

Rust crate serde-pickle

Rust 有一个 crate 用于序列化对象为 pickle 格式。repo, 文档

外部链接

参考资料