python之pkl文件的用法及说明
作者:准风璧谈 发布时间:2021-02-21 21:44:57
python之pkl文件
pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西。
cPickle在python3中更名为pickle
使用方式如下:
import pickle as p
shoplistfile = 'shoplist.data' #保存文件数据所在文件的文件名
shoplist = ['apple', 'mango', 'carrot']
f = open(shoplistfile, 'wb') #二进制打开,如果找不到该文件,则创建一个
p.dump(shoplist, f) #写入文件
f.close() #关闭文件
del shoplist # 删除列表
f = open(shoplistfile, 'rb')
storedlist = p.load(f)#重新加载数据到列表中
print(storedlist)
#输出结果:[‘apple’, ‘mango’, ‘carrot’]
代码:
import pickle
b=7
i=13000000
fa=99.056
s='中国人民 123abc'
lst=[[1,2,3],[4,5,6],[7,8,9]]
tu=(-5,10,8)
coll={4,5,6}
dic={'a':'apple','b':'banana','g':'grape','o':'orange'}
f=open('sample_pickle.dat','wb') #以写模式打开二进制文件
try:
pickle.dump(b,f) #对象个数
pickle.dump(i,f) #写入整数
pickle.dump(fa,f) #写入字符串
pickle.dump(s,f) #写入浮点数
pickle.dump(lst,f) #写入列表
pickle.dump(tu,f) #写入元组
pickle.dump(coll,f) #写入集合
pickle.dump(dic,f) #写入字典
except:
print('写文件异常')
finally:
f.close()
'''
使用pickle模块读取'sample_pickle.dat'内的二进制内容
'''
f=open('sample_pickle.dat','rb')
n=pickle.load(f) #读出文件的数据个数
for i in range(n):
x=pickle.load(f)
print(x)
f.close()
‘’‘输出
13000000
99.056
中国人民 123abc
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
(-5, 10, 8)
{4, 5, 6}
{‘a’: ‘apple’, ‘b’: ‘banana’, ‘g’: ‘grape’, ‘o’: ‘orange’}
‘’’
如何打开.pkl文件,查看.pkl文件里的内容(Python3.6)
1. show_pkl.py
#show_pkl.py
import pickle
path='aus_openface.pkl' #path='/root/……/aus_openface.pkl' pkl文件所在路径
f=open(path,'rb')
data=pickle.load(f)
print(data)
print(len(data))
#输出结果:
{'N_0000000356_00190': array([2.86, 2.27, 1.45, 1.1 , 0. , 0.65, 0.05, 0. , 0.75, 1.65, 0.6 , 0. , 1.86, 0. , 0.62, 0.25, 0. ]),
'N_0000001939_00054': array([0.34, 2.09, 0. , 2.04, 0.02, 0. , 0. , 1.22, 0. , 0.93, 0.37, 0. , 0.4 , 0. , 0. , 0.22, 0. ]),
'N_0000000437_00540': array([0. , 0.19, 0.02, 0.8 , 0.24, 1.46, 1.18, 0.37, 0. , 0. , 1.13, 3.37, 1.24, 0.73, 0.13, 1.83, 0. ]),
'N_0000001507_00202': array([1.08, 1.23, 0. , 1.83, 0.31, 1.08, 0.04, 0. , 0.24, 1.31, 0. , 0.25, 0.44, 0.6 , 0.77, 0. , 0. ])}
4
2. 运行命令:python show_pkl.py
结果如下图所示,便可以看到.pkl文件里的内容了:
(注:文件show_pkl.py保存在F:\learn_pytorch目录下,aus_openface.pkl也保存在F:\learn_pytorch目录下)
3. 特殊情况
有时候下载的是国外的代码,需要打开代码里的pkl文件,外国人写代码的编码方式可能和我们不一样。
比如我就遇到过,用上面的代码,仍旧打不开外国人给的pkl文件。
报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe1 in position 0: ordinal not in range(128)
解决:
加上encoding, data=pickle.load(f,encoding='latin1') ,成功解决我的问题。
来源:https://blog.csdn.net/peixin_huang/article/details/103671030


猜你喜欢
- 几个星期前,SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0)。这个预览版相比以前的CTP
- $array=explode(separator,$string); $string=implode(glue,$array);使用和理解这
- 一、背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽
- vbscript脚本中,fso对象CreateTextFile方法调用时可能会报“无效的过程调用或参数”错误,在使用ASP生成静态页面时,如
- Timer: 隔一定时间调用一个函数,如果想实现每隔一段时间就调用一个函数的话,就要在Timer调用的函数中,再次设置Timer。Timer
- 前言这篇文章主要介绍了JS大坑之19位数的Number型精度丢失问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 本文实例讲述了Python基于多线程实现抓取数据存入数据库的方法。分享给大家供大家参考,具体如下:1. 数据库类""&q
- 本文实例讲述了JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果。分享给大家供大家参考,具体如下:基于Sketch.js,实现了物
- 引言事情是这样的,最近在做开源软件供应链安全相关的项目,之前没了解这方面知识的时候感觉服务器被黑,数据库被删,网站被攻,这些东西都离我们太遥
- 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码。但是,建议你为每个账户设置密码。如果你以前设置了根用户密码,
- 前言:python在同一个线程中多次执行同一方法时,该方法执行耗时较长且每次执行过程及结果互不影响,如果只在主进程中执行,效率会很低,因此使
- 析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数。析构函数__del__调用:A、使用del 显式
- php操作xml最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星
- 这篇文章讨论Python中下划线_的使用。跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定。一、 
- Stream Grpc在我们单次投递的数据量很大的时候,比如传输一个二进制文件的时候,数据包过大,会造成瞬时传输压力。或者接收方接收到数据后
- 引言:之前博文介绍过了mysql/oracle与ES之间的同步机制。而logstash最初始的日志同步功能还没有介绍。本文就logstash
- PHP fprintf() 函数实例把一些文本写入到名为 "test.txt" 的文本文件:<?php $numb
- Mysql简易索引一、没有索引的时候如何查找先忽略掉索引这个概念,如果现在直接要查某条记录,要如何查找呢?在一个页中查找如果表中的记录很少,
- 本文实例讲述了python求crc32值的方法。分享给大家供大家参考。具体实现方法如下:要想求CRC值,前面要import binascii
- 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB