爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9379|回复: 2

[混合编程] [已收纳]python之数据便捷保存手段pickle,类似IDL的sav格式

[复制链接]

新浪微博达人勋

发表于 2020-3-25 17:32:08 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2021-1-31 00:17 编辑

IDL中有个sav数据格式,可以保存数组、字符串、图形句柄、函数等等,十分便利,
使用python如果想得心应手,势必也需要一个这种格式,不然多个脚本共享数据就成了问题,
粗略查找,pickle模块好像可以肩负这个使命,主要参考一下的帖子:
pickle文件帖子

import pickle

#写文件
x1=[[1.1,2.2],[3.3,4.4]]
x2=['abc','def']
x3=(-5,10,8)
x4={4,5,6}
x5={'a':'apple','b':'banana','c':'grape'}
#以写模式打开二进制文件
f=open('sample_pickle.dat','wb')
pickle.dump(5,f)#第一个表示元素个数
pickle.dump(x1,f)
pickle.dump(x2,f)
pickle.dump(x3,f)
pickle.dump(x4,f)
pickle.dump(x5,f)
f.close()

#读取数据
f=open('sample_pickle.dat','rb')
n=pickle.load(f)    #读出文件的数据个数
print('数量=',n)
for i in range(n):
    x=pickle.load(f)
    print(i,':',x)
f.close()

输出结果:
数量= 5
0 : [[1.1, 2.2], [3.3, 4.4]]
1 : ['abc', 'def']
2 : (-5, 10, 8)
3 : {4, 5, 6}
4 : {'a': 'apple', 'b': 'banana', 'c': 'grape'}


思考:
相比于sav格式,pickle似乎不能保存函数,而且需要给出变量个数
不过,一般我都把数据按结构体,即字典格式输出,变量个数就锁定为1了

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-6-15 15:36:46 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-25 11:01 编辑

尴尬,pkl文件居然很大!

以前我处理数据都要把原始数据做成sav文件,不仅可以快速加载数据,还能节省不少空间。
但是最近使用pickle就有些费解,pickle生成的二进制dat文件居然很大,比原始文件还大!

原始文件有5千多个,8.56M:
1.jpg

pickle文件17M,sav文件8.5M:
2.jpg

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-6-15 15:42:31 | 显示全部楼层
本帖最后由 15195775117 于 2020-12-25 11:01 编辑

长期体验认为,IDL的sav格式效率是不错的,一般大小仅有txt文件的1/5

3.jpg

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表