1.序列化之json
注意:如果我們要在不同的程式語言之間傳遞物件,就必須把物件序列化為標準格式
,比如xml,但更好的方法是序列化為json,因為json表示出來就是乙個字串,
可以被所有語言讀取,也可以方便地儲存到磁碟或者通過網路傳輸。json不僅是標
準格式,並且比xml更快,而且可以直接在web頁面中讀取,非常方便。
import json
dic=
print(type(dic))#
j=json.dumps(dic)
print(type(j))#
f=open('序列化物件','w')
f.write(j) #-------------------等價於json.dump(dic,f)
f.close()
#-----------------------------反序列化
import json
f=open('序列化物件')
data=json.loads(f.read())# 等價於data=json.load(f)
import json
#dct=""#json 不認單引號
#dct=str()#報錯,因為生成的資料還是單引號:
dct=''
print(json.loads(dct))
#conclusion:
# 無論資料是怎樣建立的,只要滿足json格式,就可以json.loads出來,不一定非要dumps的資料才能loads
2.序列化之pickle
注意:pickle的問題和所有其他程式語言特有的序列化問題一樣,就是它只能用
於python,並且可能不同版本的python彼此都不相容,因此,只能用pickle儲存
那些不重要的資料,不能成功地反序列化也沒關係。
import pickle
dic=
print(type(dic))#
j=pickle.dumps(dic)
print(type(j))#
f=open('序列化物件_pickle','wb')#注意是w是寫入str,wb是寫入bytes,j是'bytes'
f.write(j) #-------------------等價於pickle.dump(dic,f)
f.close()
#-------------------------反序列化
import pickle
f=open('序列化物件_pickle','rb')
data=pickle.loads(f.read())# 等價於data=pickle.load(f)
print(data['age'])
3.序列化之configparser
import configparser
config=configparser.configparser()
config.read('a.cfg')
#檢視所有的標題
res=config.sections() #['section1', 'section2']
print(res)
#檢視標題section1下所有key=value的key
options=config.options('section1')
print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']
#檢視標題section1下所有key=value的(key,value)格式
item_list=config.items('section1')
print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]
#檢視標題section1下user的值=>字串格式
val=config.get('section1','user')
print(val) #egon
#檢視標題section1下age的值=>整數格式
val1=config.getint('section1','age')
print(val1) #18
#檢視標題section1下is_admin的值=>布林值格式
val2=config.getboolean('section1','is_admin')
print(val2) #true
#檢視標題section1下salary的值=>浮點型格式
val3=config.getfloat('section1','salary')
print(val3) #31.0
改寫:import configparser
config=configparser.configparser()
config.read('a.cfg',encoding='utf-8')
#刪除整個標題section2
config.remove_section('section2')
#刪除標題section1下的某個k1和k2
config.remove_option('section1','k1')
config.remove_option('section1','k2')
#判斷是否存在某個標題
print(config.has_section('section1'))
#判斷標題section1下是否有user
print(config.has_option('section1',''))
#新增乙個標題
config.add_section('egon')
#在標題egon下新增name=egon,age=18的配置
config.set('egon','name','egon')
config.set('egon','age',18) #報錯,必須是字串
#最後將修改的內容寫入檔案,完成最終的修改
config.write(open('a.cfg','w'))
Python中的序列化和反序列化
python中的序列化和反序列化通常有兩種模組的使用 1 pickle模組 2 json模組 1 序列化 就是把不可傳輸的物件轉換為可儲存或可傳輸的過程 2 反序列化 就是把在磁碟,等介質中的資料轉換為物件 描述 對於大多數應用程式來講,dump 和load 函式的使用就是你使用pickle模組所需...
python中的序列化和反序列化
滴滴,什麼是序列呢?可以理解為序列就是字串。序列化的應用 序列化和反序列化的概念 序列化的目的 1.以某種儲存形式是自定義物件持久化 2.將物件從乙個地方傳遞到另乙個地方 3.使程式更具有維護性 各種模組的特點和應用 1.json模組 通用的序列化格式 只有很少的一部分資料型別通過json轉化為字串...
python 序列化模組 python 序列化模組
一 介紹 1 分類 序列化 資料型別 字串 反序列化 字串 資料型別 2 作用 檔案傳輸和檔案儲存需要將資料型別轉換成字串 二 序列號模組分類 1 json 優點 程式語言中的英語,同用語言 缺點 資料型別少 數字 字串 列表 字典 元祖 通過列表進行的 2 pickle 優點 python的所有資...