dumps-loads dump-load的区别
生活随笔
收集整理的這篇文章主要介紹了
dumps-loads dump-load的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
申明:資料來源于網絡及書本,通過理解、實踐、整理成學習筆記。
json模塊
import json dict1={'id':'001','name':'Maxwell'} #--------------dumps & loads--------------------- with open('dumps.txt','w',encoding='utf-8') as f:f.write(json.dumps(dict1))f.close() with open('dumps.txt','r',encoding='utf-8') as f:content = f.read()f.close()print(type(content))print(content)dict2=json.loads(content)print(type(dict2))print(dict2)print(dict2.get('name'))print(dict2['id']) #--------------dump & load--------------------- with open('dump.txt','w',encoding='utf-8') as f:json.dump(dict1,f) #dump序列化,直接操作原生數據類型對象和文件句柄f.close() with open('dump.txt','r',encoding='utf-8') as f:content = json.load(f) #注意這里先用一個對象把load的內容保存起來,否則關閉文件后就不能再訪問了f.close()print(type(content))print(content)dict2=contentprint(type(dict2))print(dict2)print(dict2.get('name'))print(dict2['id'])顯示結果: <class 'str'> {"id": "001", "name": "Maxwell"} <<<<<<<<看這里 <class 'dict'> {'id': '001', 'name': 'Maxwell'} Maxwell 001 <class 'dict'> {'id': '001', 'name': 'Maxwell'} <<<<<<<<看這里 <class 'dict'> {'id': '001', 'name': 'Maxwell'} Maxwell 001pickle模塊
import pickle dict1={'id':'001','name':'Maxwell'} #--------------dumps & loads--------------------- with open('dumps.txt','wb') as f:f.write(pickle.dumps(dict1))f.close() with open('dumps.txt','rb') as f:content = f.read()f.close()print(type(content))print(content)dict2=pickle.loads(content)print(type(dict2))print(dict2)print(dict2.get('name'))print(dict2['id']) #--------------dump & load--------------------- with open('dump.txt','wb') as f:pickle.dump(dict1,f) #dump序列化,直接操作原生數據類型對象和文件句柄f.close() with open('dump.txt','rb') as f:content = pickle.load(f) #注意這里先用一個對象把load的內容保存起來,否則關閉文件后就不能再訪問了f.close()print(type(content))print(content)dict2=contentprint(type(dict2))print(dict2)print(dict2.get('name'))print(dict2['id'])顯示結果: <class 'bytes'> <<<<<<<<看這里 b'\x80\x03}q\x00(X\x02\x00\x00\x00idq\x01X\x03\x00\x00\x00001q\x02X\x04\x00\x00\x00nameq\x03X\x07\x00\x00\x00Maxwellq\x04u.' <class 'dict'> {'id': '001', 'name': 'Maxwell'} Maxwell 001 <class 'dict'> <<<<<<<<看這里 {'id': '001', 'name': 'Maxwell'} <class 'dict'> {'id': '001', 'name': 'Maxwell'} Maxwell 001pickle序列化函數
import pickledef sayhi(name):print('Hello:', name)info = {'filename':'test.txt', 'abc':'123','func':sayhi} #func對應的值是一個函數 print(type(info)) print(info)with open('test.txt', 'wb') as f:data = pickle.dumps(info)f.write(data)print(type(data))print(data)print(pickle.loads(data))顯示結果: <class 'dict'> {'filename': 'test.txt', 'abc': '123', 'func': <function sayhi at 0x7f057bea8158>} <class 'bytes'> b'\x80\x03}q\x00(X\x08\x00\x00\x00filenameq\x01X\x08\x00\x00\x00test.txtq\x02X\x03\x00\x00\x00abcq\x03X\x03\x00\x00\x00123q\x04X\x04\x00\x00\x00funcq\x05c__main__\nsayhi\nq\x06u.' {'filename': 'test.txt', 'abc': '123', 'func': <function sayhi at 0x7f057bea8158>}pickle反序列化函數
import pickledef sayhi(name): #此處需要定義出函數,因為它不能被直接加載到內存中print('Hello:',name)with open('test.txt','rb') as f:data = f.read()print(type(data))print(data)info = pickle.loads(data)print(type(info))print(info) print(info.get('filename')) print(info.get('abc')) info.get('func')('Tom')顯示結果: <class 'bytes'> b'\x80\x03}q\x00(X\x08\x00\x00\x00filenameq\x01X\x08\x00\x00\x00test.txtq\x02X\x03\x00\x00\x00abcq\x03X\x03\x00\x00\x00123q\x04X\x04\x00\x00\x00funcq\x05c__main__\nsayhi\nq\x06u.' <class 'dict'> {'filename': 'test.txt', 'abc': '123', 'func': <function sayhi at 0x7f4e18c8f158>} test.txt 123 Hello: Tom總結
以上是生活随笔為你收集整理的dumps-loads dump-load的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于九连环
- 下一篇: swift cell的高度是动态的 三个