pickle 模块是 Python 中用于序列化和反序列化对象的标准模块。它可以将对象转换为字节流,以便将其保存到文件或通过网络传输,然后再将字节流还原为原始对象。以下是 pickle 模块的常用函数、示例以及一些注意事项:
pickle.dump() 函数:
用于将对象序列化并将结果写入文件。
import pickle
data = {'name': 'John', 'age': 30, 'city': 'New York'}
with open('data.pkl', 'wb') as file:
pickle.dump(data, file)
pickle.load() 函数:
用于从文件中读取序列化的对象并反序列化。
import pickle
with open('data.pkl', 'rb') as file:
loaded_data = pickle.load(file)
print(loaded_data)
与 json 模块的区别:
- pickle 可以序列化任何可序列化的 Python 对象,包括自定义类的实例。
- pickle 生成的序列化数据是二进制的,不可读,而 json 生成的是可读的文本。
- pickle 是 Python 特有的,不能在不同编程语言之间进行数据交换。
示例说明:
import pickle
# 示例对象
person = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}
# 将对象序列化到文件
with open('person.pkl', 'wb') as file:
pickle.dump(person, file)
# 从文件中加载并反序列化对象
with open('person.pkl', 'rb') as file:
loaded_person = pickle.load(file)
print(loaded_person)
注意事项:
- 尽管 pickle 很方便,但在处理不受信任的数据时要小心使用,因为它可以执行任意代码。
- 如果需要在不同的编程语言之间共享数据,考虑使用更通用的格式,如 JSON。
pickle.dumps() 和 pickle.loads()
pickle.dumps() 和 pickle.loads() 是 pickle 模块中用于序列化和反序列化对象的函数,它们与 pickle.dump() 和 pickle.load() 的区别在于前者将对象序列化为字节对象,而后者用于从字节对象中反序列化对象。
pickle.dumps() 函数:
用于将对象序列化为字节对象。
import pickle
data = {'name': 'John', 'age': 30, 'city': 'New York'}
serialized_data = pickle.dumps(data)
pickle.loads() 函数:
用于从字节对象中反序列化对象。
import pickle
serialized_data = b'\x80\x04\x95\x1c\x00\x00...'
loaded_data = pickle.loads(serialized_data)
示例说明:文章来源:https://www.toymoban.com/news/detail-789920.html
import pickle
# 示例对象
person = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}
# 将对象序列化为字节对象
serialized_person = pickle.dumps(person)
# 从字节对象中加载并反序列化对象
loaded_person = pickle.loads(serialized_person)
print(loaded_person)
使用 dumps() 和 loads() 的好处是可以在程序中直接操作字节对象而无需将其写入文件,适用于需要在程序内部传递序列化对象的情况。文章来源地址https://www.toymoban.com/news/detail-789920.html
到了这里,关于Python:pickle 模块详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!