python之pkl文件的用法及说明
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') ,成功解决我的问题。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Django配置celery(非djcelery)执行异步任务和定时任务
这篇文章主要介绍了Django配置celery(非djcelery)执行异步任务和定时任务,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07pytest解读fixtures之Teardown处理yield和addfinalizer方案
这篇文章主要为大家介绍了pytest解读fixtures之Teardown处理yield和addfinalizer的方案实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-06-06python+opencv+selenium自动化登录邮箱并解决滑动验证的问题
本文主要讲解基于python+opencv+selenium自动化登录邮箱并解决滑动验证的问题,在这大家需要注意页面元素定位及文本框和验证码的frame嵌套问题,感兴趣的朋友一起看看吧2021-07-07Caffe卷积神经网络视觉层Vision Layers及参数详解
这篇文章主要为大家介绍了Caffe卷积神经网络视觉层Vision Layers及参数详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-06-06python使用pika库调用rabbitmq交换机模式详解
这篇文章主要介绍了python使用pika库调用rabbitmq交换机模式详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下2022-08-08
最新评论