zoukankan      html  css  js  c++  java
  • python--使用pickle序列化对象

    pickle序列化对象

    如果希望透明地存储 Python 对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化:它是一个将任意复杂的对象转成对象的文本或二进制表示的过程。

    同样,必须能够将对象经过序列化后的形式恢复到原有的对象。在 Python 中,这种序列化过程称为 pickle,

    可以将对象 pickle 成字符串、磁盘上的文件或者任何类似于文件的对象,也可以将这些字符串、文件或任何类似于文件的对象 unpickle 成原来的对象

    代码实例

    import pickle
    class MyPickle(object):
    
        def __init__(self,file_name):
            self.file_name = file_name
    
        def dump(self,obj):
            """
            序列化对象
            :param obj: 
            :return: 
            """
            with open(self.file_name,'ab') as f:
                pickle.dump(obj, f)
                print('dump data',obj.__dict__)
    
        def loaditer(self):
            """
            迭代反序列化对象
            :return: 
            """
            f = open(self.file_name, 'rb')
            while True:
                try:
                    obj = pickle.load(f)
                    yield obj
                except EOFError:
                    print('EOFError')
                    f.close()
                    print(f.closed)
                    break
    
    class Person:
        def __init__(self,n,a):
            self.name=n
            self.age=a
        def show(self):
            print(self.name+"_"+str(self.age) )
    
    aa = Person("aGood", 2)
    bb = Person("bGood",3)
    cc = Person("cGood",4)
    
    p = MyPickle('c.txt')
    p.dump(aa)
    p.dump(bb)
    p.dump(cc)
    
    iter_obj = p.loaditer()
    while True:
        try:
            print(next(iter_obj).__dict__)
        except StopIteration:
            print('stop')
            break
    

    输出结果

    dump data {'name': 'aGood', 'age': 2}
    dump data {'name': 'bGood', 'age': 3}
    dump data {'name': 'cGood', 'age': 4}
    {'name': 'aGood', 'age': 2}
    {'name': 'bGood', 'age': 3}
    {'name': 'cGood', 'age': 4}
    EOFError
    True
    stop
    

      

  • 相关阅读:
    bzoj1066 [SCOI2007]蜥蜴
    bzoj2957 楼房重建
    bzoj2243 [SDOI2011]染色
    bzoj1858 [Scoi2010]序列操作
    bzoj1051 [HAOI2006]受欢迎的牛
    二分图最大匹配模板(pascal)
    gulp-file-include 合并 html 文件
    vue-cli项目结构分析
    svn汉化包安装无效的解决办法
    vue-cli npm install 失败
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/9212264.html
Copyright © 2011-2022 走看看