欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中Pickle模塊和base64模塊的使用解析

 更新時間:2023年09月22日 10:59:50   作者:生有涯,知無涯  
這篇文章主要介紹了Python中Pickle模塊和base64模塊的使用解析,pickle模塊是python的標準模塊,提供了對于python數(shù)據(jù)的序列化操作,可以將數(shù)據(jù)轉換為bytes類型,其序列化速度比json模塊要高,需要的朋友可以參考下

1.pickle模塊

pickle模塊是python的標準模塊,提供了對于python數(shù)據(jù)的序列化操作,可以將數(shù)據(jù)轉換為bytes類型,其序列化速度比json模塊要高。

  • pickle.dumps()將python數(shù)據(jù)序列化為bytes類型
  • pickle.loads()將bytes類型數(shù)據(jù)反序列化為python的數(shù)據(jù)類型
import pickle
d = {'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}
s = pickle.dumps(d)
print(s)
# b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'
print(pickle.loads(s))
# {'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}

2.base64模塊

Base64是一種基于64個可打印字符來表示二進制數(shù)據(jù)的表示方法。由于2^6=64,所以每6個比特為一個單元,對應某個可打印字符。3個字節(jié)有24個比特,對應于4個Base64單元,即3個字節(jié)可由4個可打印字符來表示。在Base64中的可打印字符包括字母A-Z、a-z、數(shù)字0-9,這樣共有62個字符,此外兩個可打印符號在不同的系統(tǒng)中而不同。

Base64常用于在通常處理文本數(shù)據(jù)的場合,表示、傳輸、存儲一些二進制數(shù)據(jù),包括MIME的電子郵件及XML的一些復雜數(shù)據(jù)。

1.標準base64只有64個字符(英文大小寫、數(shù)字和+、/)以及用作后綴等號;

2.base64是把3個字節(jié)變成4個可打印字符,所以base64編碼后的字符串一定能被4整除(不算用作后綴的等號);

3.等號一定用作后綴,且數(shù)目一定是0個、1個或2個。這是因為如果原文長度不能被3整除,base64要在后面添加\0湊齊3n位。為了正確還原,添加了幾個\0就加上幾個等號。顯然添加等號的數(shù)目只能是0、1或2;

4.嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是為了方便把含有不可見字符串的信息用可見字符串表示出來,以便復制粘貼;

python標準庫中提供了base64模塊,用來進行轉換

  • base64.b64encode()將bytes類型數(shù)據(jù)進行base64編碼,返回編碼后的bytes類型
  • base64.b64decode()將base64編碼的bytes類型進行解碼,返回解碼后的bytes類型
import base64
import pickle
d = {'1': {'count': 10, 'selected': True}, '2': {'count': 20, 'selected': False}}
s = pickle.dumps(d)
print(s)
 # b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'
b = base64.b64encode(s)   # bytes類型數(shù)據(jù)進行base64編碼,返回編碼后的bytes類型
print(b)
# b'gAN9cQAoWAEAAAAxcQF9cQIoWAUAAABjb3VudHEDSwpYCAAAAHNlbGVjdGVkcQSIdVgBAAAAMnEFfXEGKGgDSxRoBIl1dS4='
print(base64.b64decode(b))  # base64編碼的bytes類型進行解碼,返回解碼后的bytes類型
# b'\x80\x03}q\x00(X\x01\x00\x00\x001q\x01}q\x02(X\x05\x00\x00\x00countq\x03K\nX\x08\x00\x00\x00selectedq\x04\x88uX\x01\x00\x00\x002q\x05}q\x06(h\x03K\x14h\x04\x89uu.'

Base64是一種通過查表的編碼方法,不能用于加密,即使使用自定義的編碼表也不行。

Base64適用于小段內容的編碼,比如數(shù)字證書簽名、Cookie的內容等。

一句話講:Base64是一種任意二進制到文本字符串的編碼方法,常用于在URL、Cookie、網頁中傳輸少量二進制數(shù)據(jù)。

3.應用場景

存一些非敏感數(shù)據(jù)到cookie里面。例如: 網站未登錄用戶選購商品到購物車,可以將選的商品保存到cookie,用戶登陸以后從cookie取出數(shù)據(jù)進行合并。步驟如下:

商品的數(shù)據(jù)字典存到cookie字符串,假設goods_dict是選購的商品數(shù)據(jù)

cookie_str = base64.b64.encode(pickle.dumps(goods_dict)).decode()

從cookie的字符串取出用戶選購的商品數(shù)據(jù)字典。

goods_dict = pickle.loads(base64.b64decode(cookie_str.encode()))

到此這篇關于Python中Pickle模塊和base64模塊的使用解析的文章就介紹到這了,更多相關Pickle模塊和base64模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python創(chuàng)建相同值數(shù)組/列表的兩種方法

    Python創(chuàng)建相同值數(shù)組/列表的兩種方法

    眾所周知數(shù)組是一種用來在計算機中存儲連續(xù)的相同類型數(shù)值的數(shù)據(jù)結構,這篇文章主要給大家介紹了關于Python創(chuàng)建相同值數(shù)組/列表的兩種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python基于Opencv來快速實現(xiàn)人臉識別過程詳解(完整版)

    Python基于Opencv來快速實現(xiàn)人臉識別過程詳解(完整版)

    這篇文章主要介紹了Python基于Opencv來快速實現(xiàn)人臉識別過程詳解(完整版)隨著人工智能的日益火熱,計算機視覺領域發(fā)展迅速,今天就為大家?guī)碜罨A的人臉識別基礎,從一個個函數(shù)開始走進這個奧妙的世界,需要的朋友可以參考下
    2019-07-07
  • Python PyWebIO實現(xiàn)網頁版數(shù)據(jù)查詢器

    Python PyWebIO實現(xiàn)網頁版數(shù)據(jù)查詢器

    PyWebIO提供了一系列命令式的交互函數(shù)來在瀏覽器上獲取用戶輸入和進行輸出,將瀏覽器變成了一個“富文本終端”,可以用于構建簡單的Web應用或基于瀏覽器的GUI應用。本文將利用PyWebIO制作一個網頁版的數(shù)據(jù)查詢器,感興趣的可以學習一下
    2021-12-12
  • Python實現(xiàn)二維曲線擬合的方法

    Python實現(xiàn)二維曲線擬合的方法

    今天小編就為大家分享一篇Python實現(xiàn)二維曲線擬合的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python實現(xiàn)向微信用戶發(fā)送每日一句 python實現(xiàn)微信聊天機器人

    python實現(xiàn)向微信用戶發(fā)送每日一句 python實現(xiàn)微信聊天機器人

    這篇文章主要為大家詳細介紹了python實現(xiàn)向微信用戶發(fā)送每日一句,python調實現(xiàn)微信聊天機器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • python中的逆序遍歷實例

    python中的逆序遍歷實例

    今天小編就為大家分享一篇python中的逆序遍歷實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 如何將conda虛擬環(huán)境添加到Jupyter lab內核

    如何將conda虛擬環(huán)境添加到Jupyter lab內核

    這篇文章主要介紹了如何將conda虛擬環(huán)境添加到Jupyter lab內核問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python編寫電話薄實現(xiàn)增刪改查功能

    Python編寫電話薄實現(xiàn)增刪改查功能

    這篇文章主要為大家詳細介紹了Python編寫電話薄實現(xiàn)增刪改查功能的相關資料,感興趣的朋友可以參考一下
    2016-05-05
  • pytest之assert斷言的具體使用

    pytest之assert斷言的具體使用

    這篇文章主要介紹了pytest之assert斷言的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • python用Tkinter做自己的中文代碼編輯器

    python用Tkinter做自己的中文代碼編輯器

    這篇文章主要介紹了python用Tkinter做自己的中文代碼編輯器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論