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

Python實現(xiàn)數(shù)據(jù)的序列化操作詳解

 更新時間:2022年07月06日 15:26:44   作者:VT漫步  
在日常開發(fā)中,對數(shù)據(jù)進行序列化和反序列化是常見的數(shù)據(jù)操作,Python提供了兩個模塊方便開發(fā)者實現(xiàn)數(shù)據(jù)的序列化操作,即?json?模塊和?pickle?模塊。本文就為大家詳細講解這兩個模塊的使用,需要的可以參考一下

?在日常開發(fā)中,對數(shù)據(jù)進行序列化和反序列化是常見的數(shù)據(jù)操作,Python提供了兩個模塊方便開發(fā)者實現(xiàn)數(shù)據(jù)的序列化操作,即 json 模塊和 pickle 模塊。這兩個模塊主要區(qū)別如下:

  • json 是一個文本序列化格式,而 pickle 是一個二進制序列化格式;
  • json 是我們可以直觀閱讀的,而 pickle 不可以;
  • json 是可互操作的,在 Python 系統(tǒng)之外廣泛使用,而 pickle 則是 Python 專用的;
  • 默認情況下,json 只能表示 Python 內(nèi)置類型的子集,不能表示自定義的類;但 pickle 可以表示大量的 Python 數(shù)據(jù)類型。

Json 模塊

Json 是一種輕量級的數(shù)據(jù)交換格式,由于其具有傳輸數(shù)據(jù)量小、數(shù)據(jù)格式易解析等特點,它被廣泛應(yīng)用于各系統(tǒng)之間的交互操作,作為一種數(shù)據(jù)格式傳遞數(shù)據(jù)。它包含多個常用函數(shù),具體如下:

dumps()函數(shù)

dumps()函數(shù)可以將 Python 對象編碼成 Json 字符串。例如:

#字典轉(zhuǎn)成json字符串 加上ensure_ascii=False以后,可以識別中文, indent=4是間隔4個空格顯示   

import json         
d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{ 'sex':'女','addr':'上海', 'age':24},}
print(json.dumps(d,ensure_ascii=False,indent=4)) 

#執(zhí)行結(jié)果:
{
    "小明": {
        "sex": "男",
        "addr": "上海",
        "age": 26
    },
    "小紅": {
        "sex": "女",
        "addr": "上海",
        "age": 24
    }
}

dump()函數(shù)

dump()函數(shù)可以將 Python對象編碼成 json 字符串,自動寫入到文件中,不需要再單獨寫文件。例如:

#字典轉(zhuǎn)成json字符串,不需要寫文件,自動轉(zhuǎn)成的json字符串寫入到‘users.json'的文件中 
import json                                                                         
d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{ 'sex':'女','addr':'上海', 'age':24},}
#打開一個名字為‘users.json'的空文件
fw =open('users.json','w',encoding='utf-8')

json.dump(d,fw,ensure_ascii=False,indent=4)

loads()函數(shù)

loads()函數(shù)可以將 json 字符串轉(zhuǎn)換成 Python 的數(shù)據(jù)類型。例如:

#這是users.json文件中的內(nèi)容
{
    "小明":{
        "sex":"男",
        "addr":"上海",
        "age":26
    },
    "小紅":{
        "sex":"女",
        "addr":"上海",
        "age":24
    }
}

#!/usr/bin/python3
#把json串變成python的數(shù)據(jù)類型   
import json  
#打開‘users.json'的json文件
f =open('users.json','r',encoding='utf-8')
#讀文件
res=f.read()
print(json.loads(res))   

#執(zhí)行結(jié)果:
{'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小紅': {'sex': '女', 'addr': '上海', 'age': 24}}

load()函數(shù)

load()跟loads()功能相似,load()函數(shù)可以將 json 字符串轉(zhuǎn)換成 Python 數(shù)據(jù)類型,不同的是前者的參數(shù)是一個文件對象,不需要再單獨讀此文件。例如:

#把json串變成python的數(shù)據(jù)類型:字典,傳一個文件對象,不需要再單獨讀文件 
import json   
#打開文件
f =open('users.json','r',encoding='utf-8') 
print(json.load(f))

#執(zhí)行結(jié)果:
{'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小紅': {'sex': '女', 'addr': '上海', 'age': 24}}

Pickle 模塊

Pickle 模塊與 Json 模塊功能相似,也包含四個函數(shù),即 dump()、dumps()、loads() 和 load(),它們的主要區(qū)別如下:

dumps 和 dump 的區(qū)別在于前者是將對象序列化,而后者是將對象序列化并保存到文件中。

loads 和 load 的區(qū)別在于前者是將序列化的字符串反序列化,而后者是將序列化的字符串從文件讀取并反序列化。

dumps()函數(shù)

dumps()函數(shù)可以將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有python語言認識的字符串,例如:

import pickle
# dumps功能
import pickle
data = ['A', 'B', 'C','D']  
print(pickle.dumps(data))

b'\x80\x03]q\x00(X\x01\x00\x00\x00Aq\x01X\x01\x00\x00\x00Bq\x02X\x01\x00\x00\x00Cq\x03X\x01\x00\x00\x00Dq\x04e.'

dump()函數(shù)

dump()函數(shù)可以將數(shù)據(jù)通過特殊的形式轉(zhuǎn)換為只有python語言認識的字符串,并寫入文件。例如:

# dump功能
with open('test.txt', 'wb') as f:
    pickle.dump(data, f)
print('寫入成功')

寫入成功

loads()函數(shù)

loads()函數(shù)可以將pickle數(shù)據(jù)轉(zhuǎn)換為python的數(shù)據(jù)結(jié)構(gòu)。例如:

# loads功能
msg = pickle.loads(datastr)
print(msg)

['A', 'B', 'C', 'D']

load()函數(shù)

load()函數(shù)可以從數(shù)據(jù)文件中讀取數(shù)據(jù),并轉(zhuǎn)換為python的數(shù)據(jù)結(jié)構(gòu)。例如:

# load功能
with open('test.txt', 'rb') as f:
   data = pickle.load(f)
print(data)

['A', 'B', 'C', 'D']

總結(jié)

本節(jié)給大家介紹 Python 中 json&pickle 模塊的常用操作,對于實現(xiàn)數(shù)據(jù)的序列化和反序列化提供了支撐。

到此這篇關(guān)于Python實現(xiàn)數(shù)據(jù)的序列化操作詳解的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)序列化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python3使用xml.dom.minidom和xml.etree模塊兒解析xml文件封裝函數(shù)的方法

    Python3使用xml.dom.minidom和xml.etree模塊兒解析xml文件封裝函數(shù)的方法

    這篇文章主要介紹了Python3使用xml.dom.minidom和xml.etree模塊兒解析xml文件,封裝函數(shù)的方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • python strip()函數(shù) 介紹

    python strip()函數(shù) 介紹

    Python strip() 方法用于移除字符串頭尾指定的字符,需要的朋友可以參考下
    2013-05-05
  • Python中隨機數(shù)生成random庫實戰(zhàn)

    Python中隨機數(shù)生成random庫實戰(zhàn)

    本文介紹了Python的random庫,介紹了生成隨機整數(shù)、浮點數(shù)、序列隨機抽樣等基本功能,以及設(shè)置隨機種子、控制概率分布等高級技巧,通過多個實用示例,感興趣的可以了解一下
    2024-11-11
  • python tkinter實現(xiàn)簡單計算器功能

    python tkinter實現(xiàn)簡單計算器功能

    這篇文章主要為大家詳細介紹了python tkinter實現(xiàn)簡單計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Django初步使用Celery處理耗時任務(wù)和定時任務(wù)問題

    Django初步使用Celery處理耗時任務(wù)和定時任務(wù)問題

    這篇文章主要介紹了Django初步使用Celery處理耗時任務(wù)和定時任務(wù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 使用Python實現(xiàn)批量分割PDF文件

    使用Python實現(xiàn)批量分割PDF文件

    這篇文章主要為大家詳細介紹了如何使用Python進行批量分割PDF文件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • 如何使用python中的networkx來生成一個圖

    如何使用python中的networkx來生成一個圖

    這篇文章主要介紹了如何使用python中的networkx來生成一個圖,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Django各種緩存的配置小結(jié) ?

    Django各種緩存的配置小結(jié) ?

    本文主要介紹了Django各種緩存的配置小結(jié) ,Django提供了多種緩存后端,如內(nèi)存緩存、文件緩存、數(shù)據(jù)庫緩存、Memcached和Redis等,根據(jù)項目需求選擇合適的緩存后端,下面就一起來了解一下吧
    2023-08-08
  • matplotlib bar()實現(xiàn)百分比堆積柱狀圖

    matplotlib bar()實現(xiàn)百分比堆積柱狀圖

    這篇文章主要介紹了matplotlib bar()實現(xiàn)百分比堆積柱狀圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python實現(xiàn)在PyPI上發(fā)布自定義軟件包的方法詳解

    Python實現(xiàn)在PyPI上發(fā)布自定義軟件包的方法詳解

    在Python中我們經(jīng)常使用pip來安裝第三方Python軟件包,其實我們每個人都可以免費地將自己寫的Python包發(fā)布到PyPI上。本文我們就將詳細介紹如何發(fā)布測試包,需要的可以參考一下
    2022-06-06

最新評論

焦作市| 原阳县| 平邑县| 宜兰县| 长岛县| 宜丰县| 广州市| 涪陵区| 梅州市| 郑州市| 繁峙县| 德令哈市| 中西区| 富蕴县| 贞丰县| 德钦县| 鹤山市| 文成县| 维西| 华坪县| 芜湖市| 贵南县| 金溪县| 高陵县| 兴业县| 宁城县| 西畴县| 星子县| 武威市| 张家界市| 阜宁县| 兴仁县| 天镇县| 永城市| 旬邑县| 晋州市| 宜昌市| 永登县| 德安县| 合山市| 岚皋县|