Live2D

python 对象存储///对象序列化

如果你有写数据来之不易,并且希望每次都可以方便的读取,那么存储为一个对象是一个很不错的解决方法

方法一、

复制代码

import pickle    #首先要导入包

dics={'a':4,'b':5,'c':6}#要保存的数据集或者一个对象也行,这里以字典对象为例

#把dics字典写入到二进制文件‘bat.data’中(名字后缀都还可以随意)
with open('bat.data','wb') as f: #f.write( pickle.dumps(list) ) pickle.dump(list,f) #上面注释的意义完全一样。


#读取保存的对象 with open('bat.data','rb') as f: # data = pickle.loads(f.read()) data = pickle.load(f) #跟上面的data = pickle.loads(f.read())语意完全一样。 print(data)


输出:
{'a': 4, 'b': 5, 'c': 6}

可以看出读取的直接是一个字典(敲黑板!!)
复制代码

方法二、

复制代码

封装成函数直接调用就行

import pickle    #首先要导入包

def
readbunchobj(self,path): file_obj = open(path, 'rb') bunch = pickle.load(file_obj) file_obj.close() return bunch def writeBunchobj(self,path, bunchobj): file_obj = open(path, 'wb'
) pickle.dump(bunchobj, file_obj) file_obj.close()

复制代码

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  注:

cPickle包:

cPickle包的功能和用法与pickle包几乎完全相同 (其存在差别的地方实际上很少用到),不同在于cPickle是基于c语言编写的,速度是pickle包的1000倍。对于上面的例子,如果想使用cPickle包,我们都可以将import语句改为:

import cPickle as pickle

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

 

参考:

https://www.cnblogs.com/saryli/p/5098893.html

posted @   -涂涂-  阅读(2797)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示