python中的Pickle文件和npy文件

1 Pickle文件

1.1 介绍

pickle模块可以对小数据量进行存储。数据存储在一个.pickle文件中。pickle和数据库都是为了方便存储数据。

1.2 写入pickle文件

pickle可以将对象数据压到一个文件中,永久保存。这样在取用时,只需将该文件中的数据取出。而不是每次都重新进过各种语句,处理得到对象数据。 pickle.dump(obj,file,protocal):序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

`import pickle
d = dict(name='Bob', age=21, score=99)
with open('val.pickle', 'wb') as f:
    pickle.dump(d, f)`

1.3 读取pickle文件

pickle.load(file)反序列化对象。将文件中的数据解析为一个Python对象。

`# 方法一
import pickle
file = open('/Data/Embedding/rel.voc.pickle','rb')  # 以二进制读模式(rb)打开pkl文件
data = pickle.load(file)  # 读取存储的pickle文件
print(type(data))   # 查看数据类型
for i, (k, v) in enumerate(data.items()):   # 读取字典中前十个键值对
    if i in range(0, 10):
        print(k, v)`

结果如下:

python中的Pickle文件和npy文件_第1张图片

`# 方法二
import pickle as pkl
test= pkl.load(open("fold-0.test.pickle","rb"))
print(type(test))   # 查看数据类型
​
输出:
​

​
test[0].__dict__`

1.4 读取后存入txt文件

`# 将字典数据存入txt文件
f = open('/Data/Embedding/rel.voc.txt','w',encoding='utf-8')  #以'w'方式打开文件
for k,v in data.items():  # 遍历字典中的键值
    s1 = str(k)                 # 把字典的值转换成字符型
    s2 = str(v)                 # 把字典的值转换成字符型
    f.write(s1 + ':' + s2 +'\n')             # 一行一个键值对
f.close() # 关闭文件
​
file.close()`
​
`# 将列表数据存入txt文件
f = open('/mnt/data/sunqi/Work/KBQA-Adapter/Data/SQB/fold-0.vaild.txt','w',encoding='utf-8')  #以'w'方式打开文件
for i in range(len(a)):  # 遍历列表
    s = str(a[i].__dict__)  # 一行一个dict
    f.write(s +'\n')             
f.close() # 关闭文件
​
file.close()`

2 npy文件

2.1 介绍

.npy文件是numpy专用的二进制文件。

np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

2.2 写入npy文件

将数组以二进制格式保存到磁盘。

`import numpy as np`
`a=np.arange(5)`
`np.save('test.npy',a)`

这样在程序所在的文件夹就生成了一个test.npy文件

2.3 读取npy文件

将test.npy文件中的数据读出来

import numpy as np
test=np.load('/Data/word.emb.nre.npy',encoding = "latin1")  #加载文件
print(type(test))  # 查看数据类型
 输出:

​
print(test.shape)  # 查看numpy.ndarray数据的维度
 输出:
(100003, 300)
​
print(test[0])`

2.3 存入txt文件

# 将numpy矩阵数据存入txt文件
doc = open('/Data/word.emb.nre.txt', 'a')  #打开一个存储文件,并依次写入
for i in range (len (test)):
    doc.write(str(test[i])+'\n')
doc.close()`
​
​

你可能感兴趣的:(python学习,pytorch,python,开发语言,后端,算法)