关于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。
 

 

 

 

 

 
posted @ 2023-06-07 16:42  丁洪贞  阅读(199)  评论(0编辑  收藏  举报