python模組 序列化

2022-06-25 10:06:12 字數 3747 閱讀 7526

主要內容:

1.序列化模組.

json

pickle

shelve(了解)

序列化模組:

為了把資料用於網路傳輸,

以及檔案的讀寫操作.

序列化: 將資料轉化成序列化字串.

反序列化: 將序列化字串轉化成原資料.

序列化模組:序列化是創造乙個序列.

如何把乙個字典傳給其他人,依賴之前的知識也可以做到,參考如下:

dic = 

s =str(dic)

p =eval(s)

print

(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,可以在各個語言中通用.

示例:

import

json

dic =

s =json.dumps(dic)

print

(s)p =json.loads(s)

print(p)

這裡需要注意的是json.dump和json.load的問題

json.load只能讀取一次jsondump寫的內容,如果json.dump對乙個檔案寫了兩次,就會報錯.如下:

import

json

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來解決.

如下:

import

json

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)

其他引數:

示例:

import

json

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

pickle

tu1 = (1,2,4)

s =pickle.dumps(tu1)

p =pickle.loads(s)

print(p)

但是dump和load是有區別的.而且還比較大

pickle.dump()可以多幾次寫入檔案,而且pickle也可以通過pickle.load來獲取,但是

pickle.load一次只能獲取一次,所以可以通過異常處理來解決

示例:

import

pickle

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)

print

(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中,...