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)

结果截图:
在这里插入图片描述

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

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))  # 查看数据类型
# 输出:
<class 'numpy.ndarray'>

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()
  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值