如何將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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM