您的位置:首页 > 娱乐 > 明星 > python爬虫预备知识三-序列化和反序列化

python爬虫预备知识三-序列化和反序列化

2025/1/8 11:52:49 来源:https://blog.csdn.net/buw369521/article/details/140884959  浏览:    关键词:python爬虫预备知识三-序列化和反序列化

序列化和反序列化

序列化是为了将内存中的数据保存在磁盘上或者用于传输,实现程序状态的保存和共享。反序列化反之。

序列化后的变量再被反序列化回来之后,两者之间已经没有任何关系。

序列化后的文件是在不同程序或者说不同语言之间传递数据的关键方法之一,可以将内容标准化为xml、json等格式,用于存储或者网络传输。

常用的序列化和反序列化方法:

python中常见序列化和反序列化模块cPickle和pickle。

python2中cPickle是用C语言编写的,效率较高,优先使用cpickle。但是python3中cPickle模块已经替换为_pickle模块。python3中引入使用import pickle即可,因为pickle模块已经经过重构和优化,建议在python3中使用pickle模块。

dumps方法:将任意对象序列化为一个str。然后可以将str写入文件中。

dump方法:将序列化对象直接写入文件中。

loads方法:把序列化后的文件读取的str反序列化为对象。

load方法:将文件直接反序列化为对象。

例子1:

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

print(serialized_d)
deserialized_d=pickle.loads(serialized_d)

print(deserialized_d)

例子2:

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

例子3:通过dump之间序列化为文件内容。

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

# 把百度首页序列化到test20240802.txt文本文件中
with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

serialized_d2 = pickle.dump(d,
open(r'd:\test\test20240802b.txt','wb'))

例子4:用loads方法或者load方法将序列化文件内容反序列化。

import pickle

d =
dict(url='https://www.baidu.com/',title='百度首页',content='百度首页内容')
serialized_d =  pickle.dumps(d)

# 把百度首页序列化到test20240802.txt文本文件中
with open(r'd:\test\test20240802.txt','wb') as file_writer:
    file_writer.write(serialized_d)

serialized_d2 = pickle.dump(d,
open(r'd:\test\test20240802b.txt','wb'))
# loads方法将序列化后的文件内容读取为字符串,并且反序列化展示
with open(r'd:\test\test20240802.txt','rb') as file_reader:
    v_file_reader = pickle.loads(file_reader.read())
   
print(v_file_reader)
# load方法直接将文件内容反序列化
v_file_reader2 = pickle.load(open(r'd:\test\test20240802b.txt','rb'))
print(v_file_reader2)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com