【Python】Pickle & Json

Pickle

pickle中最主要的兩個函數(shù)對為dump()和load(),分別用來進行對象的序列化和反序列化。

pickle.dump(obj, file[, protocol]):序列化數(shù)據(jù)到一個文件描述符(一個打開的文件、套接字等)

load(file): 反序列化

import cPickle as pickle
mydata={}
fp=open{"picklefile","wb"}
pickle.dump(mydata,fp)
fp.close()

fp=open{"picklefile.dat","rb"}
out
  • 通用性(linux-windows)
  • 數(shù)據(jù)類型廣泛(可序列化的元組、字典、列表、非嵌套函數(shù)、類)
  • 可拓展
  • 維護對象引用關(guān)系

自用的pickle函數(shù)

import pickle, pprint


def pickle_save():#使用pickle模塊將數(shù)據(jù)對象保存到文件
   contact = {'julius1':{'cellphone':'13800000000','tel':'0512-34343534','qq':'354564656'},
              'julius2':{'cellphone':'13300000000','tel':'0513-34343534','qq':'454564656'},
              'julius3':{'cellphone':'13400000000','tel':'0514-34343534','qq':'554564656'},
              'julius4':{'cellphone':'13500000000','tel':'0515-34343534','qq':'654564656'}
              }
   f = open('contact_list.txt','w')
   pickle.dump(contact,f)
   f.close()

def pickle_load():#使用pickle從文件中重構(gòu)python對象
   f = open('contact_list.txt','r')
   contact = pickle.load(f)
   pprint.pprint(contact)
   pprint.pprint(contact['julius2'])#從dict中按要求取值
   pprint.pprint(contact['julius3']['cellphone'])
   pprint.pprint(contact['julius4']['qq'])
   f.close()

pickle_save()
pickle_load()

https://blog.csdn.net/julius_lee/article/details/14163207

可能的錯誤:
ERROR:write() argument must be str, not bytes
SOLUTION:文件打開用二進制
f=open("list_account.pkl","w")改為
f=open("list_account.pkl","wb+")

Json

Json是文本的,輸出unicode,pickle是二進制的。

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

# 序列化obj到fp

json.load(fp/s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

# 反序列化為obj

json.dumps([1, 2, 3, {'4': 5, '6': 7}],separators=(',', ':'))
>>>'[1,2,3,{"4":5,"6":7}]'

注意:

  • fp必須支持.write 和str輸入
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容