1.什麼是序列化模組
答:json模組用於字串和python資料型別間進行轉換
2.:json的四個功能:分別是dumps、dump、loads、load
2.1:dumps:將列表,字典,元組,數字-->字串
dumps直接操作變數,操作完成變成了乙個字串變數;
dic =import json
ret=json.dumps(dic)將字典轉換成字串
print(dic,type(dic))
print(ret,type(ret))
# #2.2loads反序列化: 將字串轉換成之前對應的資料型別 字串-->字典 用什麼轉換就用什麼轉回去.字典轉字串轉回去還是字典****注意轉換完後是字串表示""
res =json.loads(ret) #字串轉化成字典2.3 這個結果會使1變成 字串'1'print(res,type(res))
#結果:
dic =#ret = json.dumps(dic) #
序列化print
(dic,type(dic))
(ret,type(ret))
res = json.loads(ret) #
反序列化
print(res,type(res))
#結果
# #
#向檔案記錄字典
import
json
dic =
ret =json.dumps(dic)
with open(
'json_file
','a
')as f:
f.write(ret)
#從檔案中讀取字典
with open('
json_file
','r
')as f:
str_dic=f.read()
dic=json.loads(str_dic)
print(dic)
不可連續取值
需求 :就是想要把乙個乙個的字典放到檔案中,再乙個乙個取出來
ic = #寫入with open('
json_file
','a
') as f:
str_dic =json.dumps(dic)
f.write(str_dic+'\n'
) str_dic =json.dumps(dic)
f.write(str_dic + '\n'
) str_dic =json.dumps(dic)
f.write(str_dic + '\n'
)with open(
'json_file
','r
') as f:
for line in
f: dic =json.loads(line.strip())
print(dic.keys())
jsondumps loads
在記憶體中做資料轉換 :
dumps 資料型別 轉成 字串 序列化
loads 字串 轉成 資料型別 反序列化
dump load
直接將資料型別寫入檔案,直接從檔案中讀出資料型別
dump 資料型別 寫入 檔案 序列化
load 檔案 讀出 資料型別 反序列化
json是所有語言都通用的一種序列化格式
只支援 列表 字典 字串 數字
字典的key必須是字串
data =a:和json模組一樣,同樣也是將資料型別轉為字串json_dic2 = json.dumps(data,sort_keys=true,indent=4,separators=('
,','
:'),ensure_ascii=false)
(json_dic2)
#當你的字典特別長或則特別大的時候就會寫不下,所以這時會用到它的引數調整你輸出的格式
#sort_keys:對字典的key值進行了排序,
#ident表示每一行的縮排
#separate表示分隔符,
這種格式一般不在存檔案時應用該方法,只是讓程式設計師看起來方便,因為相對浪費空間;
b:pickle可以將任何資料型別轉為字串;
c:pickele是以bytes格式顯示的;
d:pickle的dumps和loads,dump和load跟json一樣
e:不同點是pickle可以對物件操作,轉為字串
import pickle#pickle的應用,將物件一一提取出來,用乙個異常處理class a:
def __init__(self,name,age):
self.name = name
self.age = age
def read(self):
print(222)
a = a('name',10)
with open('aaa',mode = 'wb')as f:
pickle.dump(a,f)
with open('aaa','rb')as f1:
ret = pickle.load(f1)
print(ret.__dict__)
ret.read()
#可用於對遊戲的存檔和讀檔
import pickle這樣就可以將物件的屬性一一儲存起來,等到用到的時候再提取出來class a:
def __init__(self,name,age):
self.name = name
self.age = age
def read(self):
print(222)
a = a('name1',10)
b = a('name2',15)
c = a('name3',18)
with open('aaa',mode = 'wb')as f:
pickle.dump(a,f)
pickle.dump(b,f)
pickle.dump(c,f)
with open('aaa','rb')as f1:
while true:
choose = true
try:
obj = pickle.load(f1)
if 'name5' == obj.name:
print(obj.__dict__)
break
except eoferror:
choose = false
break
if choose == false: #如果沒有此物件,給乙個提示
print('none')
#輸出結果:
none
python模組之序列化模組
序列化 序列 字串 序列化 其他資料型別轉化為字串資料型別 反序列化 字串轉化為其他資料型別 json模組 json 五星好評 數字 字串 列表 字典 元組 優點 通用的序列化格式 缺點 只有很少的一部分資料型別 字串 1,dumps和loads import json dumps和loads 操作...
序列化模組
模組 乙個py檔案就是乙個模組.python開發效率之高 python的模組非常多,第三方庫.模組分類 1,內建模組 登入模組,時間模組,sys模組,os模組 等等.所有的擴充套件模組 3,自定義模組.自己寫的py檔案.序列化模組.序列化 創造乙個序列.例項化 創造乙個例項 物件 將乙個字典通過網路...
序列化模組
什麼叫序列化 將原本的字典 列表等內容轉換成乙個字串的過程就叫做序列化。那為什麼要序列化呢?比如,我們在python 中寫的一段 需要c上使用,那我們怎麼給?我們能想到的方法就是存在檔案裡,然後在c上再從檔案裡讀出來。但是我們都知道,對於檔案來說是沒有 不是所有的資料型別檔案都能夠識別的比如字典 列...