主要內容:
1.序列化模組.
json
pickle
shelve(了解)
序列化模組:
為了把資料用於網路傳輸,
以及檔案的讀寫操作.
序列化: 將資料轉化成序列化字串.
反序列化: 將序列化字串轉化成原資料.
序列化模組:序列化是創造乙個序列.
如何把乙個字典傳給其他人,依賴之前的知識也可以做到,參考如下:
dic =s =str(dic)
p =eval(s)
(p,type(p))
print(p["
a"])
因為eval可能存在安全性問題,所有不建議用eval.這裡就要用到json了.
json:
優點:# 適用於不同語言之間的,
# 但是可支援的資料型別:字串,數字,列表,字典 bool。
pickle:
優點:只用於python語言之間的.
可支援python所有的資料型別.
shelve(了解):只是python,小工具(檔案方面).
# json:
# 資料通過網路傳送給別人. json
# 寫入檔案 也用到json.
序列化過程:乙個資料型別---->序列化的字串
反序列化過程:序列化的字串 ---> 它所對應的資料型別.
json有兩對方法:
dumps loads
dump load
# 被json序列化的字串:
#1,可以直接通過網路互相傳輸.
#2,可以在各個語言中通用.
示例:
importjson
dic =
s =json.dumps(dic)
(s)p =json.loads(s)
print(p)
這裡需要注意的是json.dump和json.load的問題
json.load只能讀取一次jsondump寫的內容,如果json.dump對乙個檔案寫了兩次,就會報錯.如下:
importjson
dic =
with open(
"1.txt
",mode="
w",encoding="
utf-8
") as f :
json.dump(dic,f)
json.dump(dic, f)
with open(
"1.txt
", mode="
r", encoding="
utf-8
") as f:
s =json.load(f)
print(s)
如何修正這個問題呢?可以用json.dumps來解決.
如下:
importjson
dic =
with open(
"1.txt
",mode="
w",encoding="
utf-8
") as f :
s =json.dumps(dic)
f.write(s+"\n"
) f.write(s + "\n"
) f.write(s + "\n"
) f.write(s + "\n"
) f.write(s + "\n"
) f.write(s + "\n"
) f.write(s + "\n"
) f.write(s + "\n"
)with open(
"1.txt
", mode="
r", encoding="
utf-8
") as f:
for line in
f: s =json.loads(line)
print(s)
其他引數:
示例:
importjson
data =
json_dic2 = json.dumps(data,sort_keys=true,indent=2,separators=('
|','
*'),ensure_ascii=false)
print(json_dic2)
這裡面要注意的是:
sort_keys 是指按key來排序,字母是按照ascii碼來排序的indent 是指列印出來後往左偏移的量
separators 是指字典中的:和,用什麼來替換.
ensure_ascii=false 顯示中文
pickle 序列化模組
python語言網路互動使用的,他支援所有的python資料型別.
這個和json一樣有兩對方法
dumps和loads,dump和load
dumps和loads方法和json沒有太大的區別,
示例:
import但是dump和load是有區別的.而且還比較大pickle
tu1 = (1,2,4)
s =pickle.dumps(tu1)
p =pickle.loads(s)
print(p)
pickle.dump()可以多幾次寫入檔案,而且pickle也可以通過pickle.load來獲取,但是
pickle.load一次只能獲取一次,所以可以通過異常處理來解決
示例:
importpickle
tu1 = (1,2,4)
with open(
"1.txt
",mode="wb"
) as f:
s =pickle.dump(tu1,f)
s =pickle.dump(tu1,f)
s =pickle.dump(tu1,f)
s =pickle.dump(tu1,f)
s =pickle.dump(tu1,f)
with open(
"1.txt
",mode="rb"
) as f :
while 1:
try:
p =pickle.load(f)
(p)
except
eoferror:
break
python 序列化模組 python 序列化模組
一 介紹 1 分類 序列化 資料型別 字串 反序列化 字串 資料型別 2 作用 檔案傳輸和檔案儲存需要將資料型別轉換成字串 二 序列號模組分類 1 json 優點 程式語言中的英語,同用語言 缺點 資料型別少 數字 字串 列表 字典 元祖 通過列表進行的 2 pickle 優點 python的所有資...
python 序列化模組
1 分類 序列化 資料型別 字串 反序列化 字串 資料型別 2 作用 檔案傳輸和檔案儲存需要將資料型別轉換成字串 1 json 優點 程式語言中的英語,同用語言 缺點 資料型別少 數字 字串 列表 字典 元祖 通過列表進行的 2 pickle 優點 python的所有資料型別 缺點 不通用,只能在p...
python 序列化模組
序列化 轉向乙個字串資料型別 序列 字串 用在資料儲存以及在網路上傳輸的時候等 從資料類 字串的過程 叫序列化 從字串 資料型別的過程 叫反序列化 json是乙個在所有語言都通用的序列化格式,但是相對的它支援的資料型別就比較少了 只有很少的一部分資料型別能夠通過json轉化成字串 在python中,...