Python Pickle与npy文件详解:存储与加载操作

版权申诉
0 下载量 179 浏览量 更新于2024-08-26 收藏 114KB PDF 举报
在Python编程中,Pickle和Numpy数组文件(npy)是两种常见的数据存储和持久化技术。本文主要探讨了Pickle文件的使用,这是一种用于序列化和反序列化Python对象的方法,适用于存储小到中等规模的数据。 1. **Pickle文件介绍** Pickle模块提供了一种简单的方式将Python对象(如字典、列表、类实例等)转换为可存储的二进制形式,然后保存到.pkl文件中。它的目标是让数据的存储和恢复过程尽可能地简洁。与数据库相比,Pickle更侧重于轻量级的数据存储和快速的交互,适合本地应用程序的数据存储需求。 2. **写入Pickle文件** 使用`pickle.dump()`函数可以将对象序列化并写入文件。例如,通过创建一个字典对象,然后使用`with open()`语句指定文件路径和二进制写模式('wb'),将字典写入pickle文件。`protocol`参数可以选择0(文本格式)、1(二进制格式,兼容性更好)或2(更高效但不保证跨版本兼容)。 ```python import pickle d = dict(name='Bob', age=21, score=99) with open('val.pickle', 'wb') as f: pickle.dump(d, f) ``` 3. **读取Pickle文件** 反序列化数据则是通过`pickle.load()`函数实现,它从文件中读取数据并将其解析回Python对象。可以通过两种方式读取:第一种是直接使用`open()`函数以二进制模式读取,然后调用`pickle.load()`;第二种是导入`pickle`模块别名`pkl`,简化代码操作。 ```python # 方法一 file = open('/Data/Embedding/rel.voc.pickle', 'rb') data = pickle.load(file) print(type(data)) # 方法二 test = pkl.load(open("fold-0.test.pickle", "rb")) print(type(test)) ``` 4. **将Pickle数据转存至txt文件** 在某些场景下,可能需要将Pickle中的数据转换为文本格式(如字典的键值对)。这可以通过遍历字典并逐个写入字符串到txt文件中实现。例如: ```python f = open('/Data/Embedding/rel.voc.txt', 'w', encoding='utf-8') for k, v in data.items(): s1 = str(k) s2 = str(v) f.write(s1 + ': ' + s2) ``` Numpy文件(npy)通常是用来存储NumPy数组的,而Pickle更适合任何Python对象。然而,Numpy提供了更为高效且专门针对数值数据的存储选项,例如`numpy.save()`和`numpy.load()`。选择哪种格式取决于数据类型和性能需求。如果只是存储Python对象,Pickle是简便的选择;而对于数值密集型数据,Numpy的npy格式会更加合适。