Python序列化與反序列化-json與pickle

                       Python序列化與反序列化-json與picklepython

                                            做者:尹正傑web

版權聲明:原創做品,謝絕轉載!不然將追究法律責任。編程

 

 

一.json的序列化方式與反序列化方式json

1>.json序列化網絡

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 
 8 """
 9 一.什麼是序列化:
10     咱們把對象(變量)從內存中變成可存儲或傳輸的過程稱之爲序列化,在Python中叫作picking,在其餘語言中也被
11 稱之爲serialization,marshalling,flattening等等,都是一個意思。序列化以後,就能夠把序列化後的內容寫入磁盤,
12 或者經過網絡傳輸到別的機器上,反過來,把變量從內容從序列化的對象從新督導內存裏稱之爲反序列化,即unpicking。
13 
14 二.序列化與編碼的關係
15     序列化是在編碼以前進行的操做。序列化是將各類數據類型統一處理爲字符串,在序列化完成以後須要指定這些
16 字符串以何種方式(如,utf-8,gbk等等)存入硬盤喲!固然在反序列化一個文件的內容是,首先作的操做是解碼,
17 也就是以哪一種方式打開文件,若是編碼格式打開正常就會獲取到正確的字符串,這樣就能夠進行反序列化操做啦。
18 
19 三.json模塊
20     若是咱們要在不一樣的編程語言之間傳遞對象,就必須把對象序列化爲標準格式,好比XML,但更好的辦法就是序列化爲json,
21 由於json表示出來就是一個字符串,能夠被全部語言讀取,也能夠方便的存儲到磁盤或者經過網絡傳輸。json不只是標準格式,
22 而且比XML更快,並且能夠直接在web頁面中讀取,很是方便。
23 
24 """
25 
26 import json
27 
28 accounts = {
29     "Name":"yinzhengjie",
30     "id": "210",
31     "banlance": "20000",
32 }
33 
34 #序列化方式一:
35 # f = open(r"E:\Code\pycharm\文件存放處\python學習筆記\Day11\yinzhengjie.txt","w")     #打開文件
36 #
37 # json_str = json.dumps(accounts)                                                                 #序列化操做
38 #
39 # f.write(json_str)                                                                               #寫入文件
40 
41 #序列化方式二:
42 with open(r"E:\Code\pycharm\文件存放處\python學習筆記\Day11\yinzhengjie.txt","w")as f:
43     json.dump(accounts,f)
1 {"Name": "yinzhengjie", "id": "210", "banlance": "20000"}
yinzhengjie.txt文件內容

2>.反序列化方式編程語言

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 import json
 8 
 9 with open(r"E:\Code\pycharm\文件存放處\python學習筆記\Day11\yinzhengjie.txt")as f:
10     print(json.load(f))

 二.pickle序列化與反序列化ide

1>.序列化方式學習

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 import pickle
 8 
 9 '''
10 pickle:
11     1.>用於python特有的類型 和 python的數據類型間進行轉換
12     2.>pickle模塊提供了四個功能:dumps、dump、loads、load.
13     補充說明:將數據經過特殊的形式轉換成只有python解釋器識別的字符串,這個過程咱們叫作序列化,而把哪些python可以識別的字符串轉換成咱們能看懂的叫作反序列化。
14 '''
15 
16 
17 DataInfo = {
18     "Name":"尹正傑",
19     "Password":"123"
20 }
21 
22 
23 
24 # #將數據經過特殊的形式轉換爲只有python語言知識的字符串並寫入文件
25 # pickle_str = pickle.dumps(DataInfo)
26 # print(pickle_str)
27 # f = open("yinzhengjie.txt","wb")
28 # f.write(pickle_str)
29 
30 #上面的寫入文件的方法也能夠這麼玩,看起來更簡單
31 with open("yinzhengjie.txt","wb") as f:
32     pickle.dump(DataInfo,f)

2.反序列化方式編碼

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 import pickle
 8 
 9 '''
10 用於序列化的兩個模塊
11     1>.json:用於字符串 和 python數據類型間進行轉換
12     2>.pickle:用於python特有的類型和python的數據類型間進行轉換
13     json模塊提供了四個功能:dumps、dump、loads、load
14     pickle模塊提供了四個功能:dumps、dump、loads、load
15 '''
16 
17 
18 f = open("yinzhengjie.txt","rb")
19 
20 # print(pickle.loads(f.read()))         #loads方式反序列化
21 
22 print(pickle.load(f))                   #load方式反序列化

三.對比json和pickle的異同:spa

       1>.相同點:都是用於系列化和反序列化的模塊。

     2>.不一樣點:json是在全部語言都通用的數據存儲格式,而pickle是僅僅只有python語言獨有的存儲格式。

相關文章
相關標籤/搜索