zoukankan      html  css  js  c++  java
  • Python对象的永久存储

    Python对象的永久存储

    Python对象的永久存储

    复制代码
    1.使用Python的pickle模块
    import pickle
    class A:
        def __init__(self,name,a):
            self.name=name
            self.a=a
        def rewrite(self,args):
            self.a=args
    
    
    #将对象使用pickle模块转换成二进制文件然后写入文件中
    #但此种方法无法直接更新对象文件的信息
    #此时存入文件的应该是对象本身而不是内存地址 obj1=A("qw","1") obj1=pickle.dumps(obj1) with open("userinfo","ab")as f: f.write(obj1) obj2=A("qa","2") obj2=pickle.dumps(obj2) with open("userinfo","ab")as f: f.write(obj2) obj3=A("qs","3") obj3=pickle.dumps(obj3) with open("userinfo","ab")as f: f.write(obj3) #读取文件中的对象文件 #pickle.load()一次只读取一个对象文件 f=open("userinfo","rb") while 1: try: obj = pickle.load(f) print(obj.a,obj) except: break f.close() f=open("userinfo","rb") while 1: try: obj = pickle.load(f) print(obj.a,obj) except: break f.close() 结果 #分别两次打开文件读取,对象内存地址会发生改变 1 <__main__.A object at 0x10c1375c0> 2 <__main__.A object at 0x10c137518> 3 <__main__.A object at 0x10c137940> 1 <__main__.A object at 0x10c1379b0> 2 <__main__.A object at 0x10c137630> 3 <__main__.A object at 0x10c1375c0> 可以将对象放进列表中再写入文件 如需修改对象时,将列表中的对象修改后再放回列表中最后再重新写入文件中 2.使用Python的shelve库。其和Python内置的数据结构“字典”操作很类似,
    不同点是shelve存储在外部文件中而不是存储在计算机内存中。 import shelve class A: def __init__(self,name,a): self.name=name self.a=a def rewrite(self,args): self.a=args obj1=A("qw","1") obj2=A("qa","2") obj3=A("qs","3") #写入文件 db=shelve.open("userinfo1") db["qw"]=obj1 db["qa"]=obj2 db["qs"]=obj3 db.close() #更新信息 db=shelve.open("userinfo1") for k in db: print(db[k].a) a=db[k] a.a=12 db[k]=a db.close() db=shelve.open("userinfo1") for k in db: print(db[k].a) db.close()
    复制代码
    当你的才华还撑不起你
     
     
     

    1.使用Python的pickle模块

    结果

    可以将对象放进列表中再写入文件

    如需修改对象时,将列表中的对象修改后再放回列表中最后再重新写入文件中

    2.使用Python的shelve库。

    其和Python内置的数据结构“字典”操作很类似不同点是shelve存储在外部文件中而不是存储在计算机内存中。

  • 相关阅读:
    【C# 调用 Go 语言】
    Go语言多线程 (转)
    CodeSoft 2019 企业版打标签
    (转)FFT求频谱图和功率谱密度图
    使用NI-DAQmx进行振动数据采集
    CentOS7 安装配置笔记
    .net 调用 nsfwjs 进行视频鉴别
    Electron.Net + Linux + Blazor 初尝备忘录
    关于feign调用的时候,动态传url ,以及自定义head
    go使用excelize导出xls
  • 原文地址:https://www.cnblogs.com/xinxihua/p/13682223.html
Copyright © 2011-2022 走看看