python 序列化 Python 对象
2022-05-21 本文已影响0人
孙广宁
5.21 我们需要将python对象序列化,然后将其保存到文件中、存储到数据库中或者通过网络链接进行传输
-
可以使用pickle模块。
-
pickle dump将数据写入文件
>>> import pickle
>>> data =[1,2,3,4,5]
>>> f = open('pickle.txt','wb')
>>> pickle.dump(data,f)
- 如果要将对象转储为字符串则使用dumps
>>> s =pickle.dumps(data)
>>> s
b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'
>>> f
<_io.BufferedWriter name='pickle.txt'>
>>>
- 如果想从字节流中创建对象,使用load或loads函数
>>> f =open('pickle.txt','rb')
>>> d = pickle.load(f)
>>> d
[1, 2, 3, 4, 5]
>>> s = pickle.dumps(data)
>>> s
b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'
>>> d1 = pickle.loads(s)
>>> d1
[1, 2, 3, 4, 5]
>>>
- 如果要处理多个对象
- 写入多个对象到文件f1
>>> f1 =open('pickle1.txt','wb')
>>> pickle.dump([1,2,3],f1)
>>> pickle.dump('hello',f1)
>>> pickle.dump({'a','b'},f1)
>>> f1.close()
- 读取f1文件,使用pickle 顺序load f1文件
>>> f1 =open("pickle1.txt",'rb')
>>> pickle.load(f1)
[1, 2, 3]
>>> pickle.load(f1)
'hello'
>>> pickle.load(f1)
{'b', 'a'}
>>> pickle.load(f1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
EOFError: Ran out of input
>>>
- 待更新pickle详细操作。。。。。。