最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Json與pickle模塊序列化使用介紹

 更新時間:2022年10月11日 09:08:35   作者:Python熱愛者  
這篇文章主要為大家介紹了Python中常用的兩個序列化模塊:pickle序列化和json序列化。文中的示例代碼講解詳細,感興趣的小伙伴可以學(xué)習(xí)一下

用于序列化的兩個模塊

  • json,用于字符串 和 python數(shù)據(jù)類型間進行轉(zhuǎn)換
  • pickle,用于python特有的類型 和 python的數(shù)據(jù)類型間進行轉(zhuǎn)換

Json模塊提供了四個功能:dumps、dump、loads、load

pickle模塊提供了四個功能:dumps、dump、loads、load

json.dumps 將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為所有程序語言都認識的字符串

json.dump 將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為所有程序語言都認識的字符串,并寫入文件

pickle.dumps 將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有Python語言認識的字符串

pickle.dump 將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有Python語言認識的字符串,并寫入文件

Json序列化舉例:

json序列化

# json是所有語言中都通用的,適用于不同語言進行數(shù)據(jù)交互。
# 但json只能處理簡單的數(shù)據(jù)類型,如果要處理復(fù)雜的,可以使用pickle
# 應(yīng)用場景舉例:當你使用虛擬機(或者玩游戲)時,中間你突然有點別的事情,于是要將虛擬機掛起,以便下次使用時還是現(xiàn)在的狀態(tài)。
# 于是就用到了json,json序列化將虛擬機目前的狀態(tài)(比如進行了什么操作,打開了什么文件)保存在文件中,
# 當你干完別的事,再次啟動虛擬機時,json反序列化會將文件中保存的狀態(tài)從文件中讀出來,于是你就可以繼續(xù)上次的操作了。
# dump和load配合使用可以實現(xiàn)序列化和反序列化,
# 在Python2中可以dump很多次,也可以load很多次,他們一一對應(yīng),但是其實這沒什么意義
# 但在Python3中,可以dump很多次,但是當dump多次時,load會報錯,所以記住在Python3中永遠不要dump多次
import json
info = { "name":"Alex", "age":22 }
with open('text.txt','w',encoding='utf-8') as f:
    #f.write(info) #報錯,字典不能寫入文件中,字符串能寫入文件中
    #f.write(str(info)) #太low了
    print(type(json.dumps(info)))  # <class 'str'>
    #f.write( json.dumps(info) ) # 高級做法1
    json.dump(info,f)  # 高級做法2,同上

json反序列化

import json
with open('text.txt','r',encoding='utf8') as f:
    #data=json.loads(f.read())
    data=json.load(f) #同上
    print(data["age"])

pickle序列化舉例:

pickle序列化

pickle寫進文件中的貌似是一段亂碼,其實不然,這是pickle自己的一套語法規(guī)則,當然這也不是加密

pickle可以序列化所有的數(shù)據(jù)類型

但是pickle只能在Python中使用,別的語言不認識它

import pickle
def sayhi(name):
    print("Hello ",name)
info = { "name":"Alex", "age":22, 'func':sayhi }
with open('text2.txt','wb') as f:
    print(type(pickle.dumps(info)))  # <class 'bytes'>
    f.write( pickle.dumps(info) ) # sayhi是一個內(nèi)存地址,用json序列化就寫不到文件中,會報錯

pickle反序列化

import pickle
# def sayhi(name):
#     print("Hello2 ",name)
with open('text2.txt','rb') as f:
    data=pickle.loads(f.read()) # 報錯
    print(data)
    # data["func"]('alex')
# AttributeError: Can't get attribute 'sayhi' on <module '__main__' from 'D:/python-study/s14/Day04/pickle反序列化.py'>

為什么報錯呢?因為sayhi是一個內(nèi)存地址,當pickle序列化.py程序執(zhí)行完之后,這個地址就被釋放了,當然我們就找不到了。

這里只是想說明一點:pickle可以序列化所有的數(shù)據(jù)類型,不管這個數(shù)據(jù)是否可被反序列化

如果想要不報錯,可以把sayhi函數(shù)的定義拷貝過來,而且還可以執(zhí)行這個函數(shù)

只要保證函數(shù)名相同就不會報錯,函數(shù)體可以完全不一樣

json模塊的作用之一:根據(jù)字符串書寫格式,將字符串自動轉(zhuǎn)換成相應(yīng)格式

import json
# Python3.x中input方法獲取到的都是字符串,相當于Python2.x中的raw_input
inp_str = input("請輸入:") # 輸入一個列表,[1,2,3]
print(type(inp_str)) # <class 'str'>
inp_str = json.loads(inp_str,encoding="UTF-8") # 根據(jù)字符串書寫格式,將字符串自動轉(zhuǎn)換成 列表類型
print(type(inp_str),inp_str[0]) # <class 'list'> 1
inp_str = input("請輸入:") # 輸入一個字典,{"name":"Rose","age":21,"sex":"F"}
                             # 切記,字典內(nèi)部必須是 雙引號 !?。我枙箦e。
print(type(inp_str)) # <class 'str'>
inp_str = json.loads(inp_str,encoding="UTF-8") # 根據(jù)字符串書寫格式,將字符串自動轉(zhuǎn)換成 字典類型
print(type(inp_str),inp_str['name'],inp_str['age'],inp_str['sex']) # <class 'dict'> Rose 21 F

到此這篇關(guān)于Python Json與pickle模塊序列化使用介紹的文章就介紹到這了,更多相關(guān)Python Json與pickle內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python生成文件md5校驗值函數(shù)的方法

    利用Python生成文件md5校驗值函數(shù)的方法

    這篇文章主要給大家介紹了利用Python生成文件md5校驗值函數(shù)的方法,文中給出了詳細的示例代碼,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 利用python下載scihub成文獻為PDF操作

    利用python下載scihub成文獻為PDF操作

    這篇文章主要介紹了利用python下載scihub成文獻為PDF操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python函數(shù)的迭代器與生成器的示例代碼

    Python函數(shù)的迭代器與生成器的示例代碼

    這篇文章主要介紹了Python函數(shù)的迭代器與生成器的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Python?內(nèi)置logging?使用詳細介紹

    Python?內(nèi)置logging?使用詳細介紹

    提供日志記錄的接口和眾多處理模塊,供用戶存儲各種格式的日志,幫助調(diào)試程序或者記錄程序運行過程中的輸出信息,這篇文章主要介紹了Python?內(nèi)置logging?使用講解,需要的朋友可以參考下
    2022-07-07
  • Python類的定義繼承調(diào)用比較方法技巧

    Python類的定義繼承調(diào)用比較方法技巧

    這篇文章主要介紹了Python類的定義繼承調(diào)用比較方法技巧,文章首先通過類的約束展開詳情圍繞主題介紹相關(guān)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • python判斷一個數(shù)是否能被另一個整數(shù)整除的實例

    python判斷一個數(shù)是否能被另一個整數(shù)整除的實例

    今天小編就為大家分享一篇python判斷一個數(shù)是否能被另一個整數(shù)整除的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python實現(xiàn)的圓形繪制(畫圓)示例

    Python實現(xiàn)的圓形繪制(畫圓)示例

    這篇文章主要介紹了Python實現(xiàn)的圓形繪制(畫圓),結(jié)合實例形式分析了Python基于numpy與matplotlib模塊的數(shù)學(xué)運算及圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • python求crc32值的方法

    python求crc32值的方法

    這篇文章主要介紹了python求crc32值的方法,包括相關(guān)的步驟及實現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • 對numpy中布爾型數(shù)組的處理方法詳解

    對numpy中布爾型數(shù)組的處理方法詳解

    下面小編就為大家分享一篇對numpy中布爾型數(shù)組的處理方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 深入理解Python 多線程

    深入理解Python 多線程

    這篇文章主要介紹了Python 多線程的相關(guān)知識,文中講解的非常詳細,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評論

建水县| 长葛市| 遂平县| 通许县| 定远县| 铁力市| 杭锦后旗| 沭阳县| 兴隆县| 稻城县| 西丰县| 嵩明县| 广平县| SHOW| 将乐县| 太和县| 中山市| 崇文区| 灵丘县| 门头沟区| 上蔡县| 黑水县| 咸阳市| 普洱| 石家庄市| 冀州市| 麻江县| 巴林右旗| 铁岭县| 山西省| 凤阳县| 临潭县| 澄迈县| 遂宁市| 城步| 台湾省| 军事| 丽江市| 东宁县| 蒲江县| 庄河市|