Python常用模块之序列化模块
用eval內(nèi)置方法可以將一個(gè)字符串轉(zhuǎn)成python對(duì)象,不過,eval方法是有局限性的,對(duì)于普通的數(shù)據(jù)類型,json.loads和eval都能用,但遇到特殊類型的時(shí)候,eval就不管用了,所以eval的重點(diǎn)還是通常用來執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。
#---轉(zhuǎn)換類型 d={"name":"yuan"} s=str(d) print(type(s)) d2=eval(s) print(d2[1]) with open("test") as f:for i in f :if type(eval(i.strip()))==dict:print(eval(i.strip())[1])# 計(jì)算 print(eval("12*7+5-3")) eval序列化:
把對(duì)象(變量)從內(nèi)存中變成可存儲(chǔ)或傳輸?shù)倪^程稱之為序列化,在Python中叫pickling,在其他語言中也被稱之為serialization,marshalling,flattening等等,序列化之后,就可以把序列化后的內(nèi)容寫入磁盤,或者通過網(wǎng)絡(luò)傳輸?shù)絼e的機(jī)器上。
反過來,把變量內(nèi)容從序列化的對(duì)象重新讀到內(nèi)存里稱之為反序列化,即unpickling。
json模塊 :
在不同的編程語言之間傳遞對(duì)象,就必須把對(duì)象序列化為標(biāo)準(zhǔn)格式,比如XML,但更好的方法是序列化為JSON
因?yàn)镴SON表示出來就是一個(gè)字符串,可以被所有語言讀取,也可以方便地存儲(chǔ)到磁盤或者通過網(wǎng)絡(luò)傳輸。
JSON不僅是標(biāo)準(zhǔn)格式,并且比XML更快,而且可以直接在Web頁面中讀取,非常方便。
JSON表示的對(duì)象就是標(biāo)準(zhǔn)的JavaScript語言的對(duì)象一個(gè)子集,JSON和Python內(nèi)置的數(shù)據(jù)類型對(duì)應(yīng)如下:
pickle模塊:
##----------------------------序列化 import pickledic={'name':'alvin','age':23,'sex':'male'}print(type(dic))#<class 'dict'>j=pickle.dumps(dic) print(type(j))#<class 'bytes'>f=open('序列化對(duì)象_pickle','wb')#注意是w是寫入str,wb是寫入bytes,j是'bytes' f.write(j) #-------------------等價(jià)于pickle.dump(dic,f)f.close() #-------------------------反序列化 import pickle f=open('序列化對(duì)象_pickle','rb')data=pickle.loads(f.read())# 等價(jià)于data=pickle.load(f)print(data['age'])shelve模塊:
shelve模塊比pickle模塊簡單,只有一個(gè)open函數(shù),返回類似字典的對(duì)象,可讀可寫;
key必須為字符串,而值可以是python所支持的數(shù)據(jù)類型
import shelvef = shelve.open(r'shelve.txt')# f['stu1_info']={'name':'alex','age':'18'} # f['stu2_info']={'name':'alvin','age':'20'} # f['school_info']={'website':'oldboyedu.com','city':'beijing'} # # # f.close()print(f.get('stu_info')['age'])結(jié)尾給大家推薦一個(gè)非常好的學(xué)習(xí)教程,希望對(duì)你學(xué)習(xí)Python有幫助!
Python基礎(chǔ)入門教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
Python爬蟲案例教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
總結(jié)
以上是生活随笔為你收集整理的Python常用模块之序列化模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python常用模块之logging模块
- 下一篇: Python常用模块之configpar