关于python 中间数据类的保存和查看
个人理解常见的使用场景:
debug阶段 :暂时保存中间变量用于查看,输出,比较,打印等。
正常运行程序:作为程序运行的结果保存下来以作为他用。
pickle 保存成文件
pickle是Python官方自带的库,提供dump函数实现Python对象的保存。支持自定义的对象,非常方便。Pandas的DataFrame和Obspy的Stream也都可以保存成pickle的格式。
- 支持自定义对象
- 操作方便(不需要特意将变量变换为某种特定格式)
使用方法为
import pickle # 存储变量的文件的名字
filename = 'shoplist.data' # 初始化变量
shoplist = ['apple', 'mango', 'carrot'] # 以二进制写模式打开目标文件
f = open(filename, 'wb') # 将变量存储到目标文件中区
pickle.dump(shoplist, f)
f.close() # 关闭文件
SciPy (savemat)
scipy提供的savemat函数是我常用的保存数据的方式
- 支持numpy array
- 可以与MATLAB实现数据交换
使用方法为
from scipy.io import savemat
mdict = {'a': a}
savemat('a.mat', mdict)
json
json是另一个官方库,支持列表和字典。
- 文本文件,可读性强
- 格式通用
Json(JavaScript Object Notation 的缩写)是一种数据交换格式。
最常用于客户端-服务器通信;当然你也可以将它保存到本地,所以也可以用来作为配置文件;Json 很像 Python 中的字典。像字典一样,JSON以键值对的形式传递数据。然而,JSON数据也可以是字符串、数字、布尔值或列表。
使用Python读取和解析JSON数据教程 - 知乎 (zhihu.com)
Pandas
pandas提供的DateFrame可以实现表格数据的保存。
实际当中类的保存查看中间的变量
使用open()方法写入文件
保存数据到txt
自定义函数实现各种转化查看
def obj_dict(data):
# 将类的实例转化为字典:但不转换类的方法
dicdadta = {}
for name in dir(data):
value = getattr(data, name)
if (not name.startswith('__')) and (not callable(value)):
dicdadta[name] = value
return dicdadta
如中间变量是pos_mask时,打印查看:
print(obj_dict(Pos_mask))
使用仿科学计算软件Matlab软件spyder
作为常见的IDE 软件spyder,很方便debug时候查看中间的变量,所有的操作使用习惯很matlab。