python中的load、loads實現反序列化
阿新 • • 發佈:2021-10-18
load與loads
簡介:
在python自動化中,我們傳遞一些引數是需要從檔案中讀取過來的,讀取過來的字典並非python物件資料型別而是string型別。
這樣在我們傳遞引數的時候就會出現格式不正確的情況,這時候就要用到load實現反序列化
python物件資料型別包括list ,dict,tuple,set等
案例1:load
load:load主要處理的是檔案流
首先我們新建一個txt檔案,檔案中寫入一個字典
{"a":"1","b":"2"}
這時候我們用py檔案把他讀取出來
f = open(r'C:\Users\張天賜\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通過open開啟剛剛新建的txt文件 a = f.read() #讀取f檔案下所有的內容 print(a) #列印下讀取的內容 print(type(a)) #列印下讀取內容的格式
返回結果
D:\software\python.exe C:/Users/張天賜/PycharmProjects/pythonProject/test/lianxi/111.py
{"a":"1","b":"2"}
<class 'str'>
可以看到我們讀取出來的內容看似字典,但是實際type型別是str型別的,如果在做介面測試的時候,介面需要傳輸
json格式的資料,這時候就會出現報錯的情況。
解決方案:使用load方式,將檔案中的資料轉換成python物件中的dict字典格式
import json f = open(r'C:\Users\張天賜\PycharmProjects\pythonProject\test\lianxi\load.txt','r',encoding='utf-8') #通過open開啟剛剛新建的txt文件 a = json.load(f) #讀取f檔案下所有的內容 print(a) #列印下讀取的內容 print(type(a)) #列印下讀取內容的格式
返回結果
D:\software\python.exe C:/Users/張天賜/PycharmProjects/pythonProject/test/lianxi/111.py {'a': '1', 'b': '2'} <class 'dict'>
案例2:loads
loads:loads主要處理的是字元流
正常列印一個字元形式的字典,返回結果為str型別
test = "{'a':'1','b':'2'}" print(test) print(type(test))
返回結果
{'a':'1','b':'2'} <class 'str'>
使用loads將sting型別轉換為python可讀物件
import json test = '{"a":"1","b":"2"}' test1 = json.loads(test) print(test1) print(type(test1))
返回結果
{'a': '1', 'b': '2'} <class 'dict'>