變數從記憶體中變成可儲存或傳輸的過程稱之為序列化
百科:物件的狀態資訊轉換為可以儲存或傳輸的形式的過程
通俗解釋:序列化是把其他資料型別轉換城字串或bytes
能夠在檔案裡儲存的只有bytes和str,能夠在網路上傳輸的只能是bytes。
a.以某種儲存形式使自定義物件持久化
b.將物件從乙個地方傳遞到另乙個地方
c.使程式更具維護性
python提供了pickle
模組來實現序列化
例
import pickle
data =[1
,2,3
,4]det_str = pickle.dumps(data)
print
(det_str)
# 輸出結果:b'\x80\x03]q\x00(k\x01k\x02k\x03k\x04e.'
pickle.dumps()
方法把任意物件序列化成乙個bytes
,就可以把這個bytes寫入檔案
也可以使用pickle.dump()
直接把物件序列化後寫入
import pickle
data =[1
,2,3
,4]with
open
('dump.txt'
,'wb'
)as f:
pickle.dump(d, f)
dump.txt檔案亂碼內容便是python儲存的物件內部資訊
讀取的時候,可以使用pickle.loads()方法反序列化出物件
import pickle
with
open
('dump.txt'
,'rb'
)as f:
det_str = f.read(
) data = pickle.loads(det_str)
print
(data)
# 輸出結果:[1,2,3,4]
也可以使用pickle.load()方法從乙個file-like object中直接反序列化出物件
import pickle
with
open
('dump.txt'
,'rb'
)as f:
data = pickle.load(f)
print
(data)
# 輸出結果:[1,2,3,4]
在不同的程式語言之間傳遞物件,必須要把物件序列化為標準格式。json表示出來就是乙個字串,可以被所有語言讀取。
python內建的json
模組提供了完善的python物件到json格式的轉換
import json
data =[1
,2,3
,4]data_json = json.dumps(data)
print
(data_json)
print
(type
(data_json)
)
輸出結果
[1,
2,3,
4]<
class
'str'
>
同樣,通過json.dump()方法可以直接把json寫入
import json
person_dict =
with
open
('person.txt'
,'w'
)as json_file:
json.dump(person_dict, json_file)
dumps()和dump()區別a.dump()不需要使用write()方法,只需要寫哪個字典、哪個檔案即可;dump()需要使用write()方法寫入
b.如果把字典寫到檔案裡面的時候,dump()好用;如果不需要操作檔案,或需要把內容存到資料庫和excel,則需要使用dumps()先把字典轉成字串,再寫入
把json反序列化為python物件,用loads()
或者對應的load()
方法
import json
json_str =
'[1,2,3,4]'
data = json.loads(json_str)
print
(data)
print
(type
(data)
)
輸出結果i
[1,
2,3,
4]<
class
'list'
>
load()方法
import json
with
open
('person.txt'
,'r'
)as f:
data = json.load(f)
python語言特定的序列化模組是pickle
,但如果想讓序列化更統統,更符合web標準,就要使用json
loads()和load()區別a.loads()傳的是字串,而load()傳的是檔案物件
b.使用loads()時需要先讀取檔案再使用,而load()則不用
Python高階丨IO程式設計 操作檔案和目錄
python內建的os模組可以直接呼叫作業系統給提供的介面函式 import os print os.name 輸出結果 nt輸出nt表明是windows系統,輸出posix表明是linux unix或mac os x 系統。獲取詳細的系統資訊,可以呼叫uname 函式,不過uname 函式在 wi...
Python 高階程式設計與非同步IO併發程式設計!
python中一切皆物件 動態語言和靜態語言 1.python中面對物件更徹底,在 python 中 class 魔法函式,包括 和模組都可以是物件,讓動態語言的特性得到充分的體現 2.函式和類也是物件,屬於一等公民 python資源共享群 626017123 def ask name bobby ...
高階程式設計 檔案io
檔案描述符 所有開啟的檔案通過檔案描述符引用,檔案描述符是乙個非負整數。當開啟或建立乙個新檔案時,核心向程序返回檔案描述符。1.open函式 int open const char 檔名,int oflag,建立時使用第三個引數 返回值 成功返回檔案描述符,出錯返回 1.開啟方式 oflag 1.o...