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

關(guān)于如何把Python對象存儲為文件的方法詳解

 更新時間:2024年01月25日 11:32:26   作者:微小冷  
本文將給大家介紹如何把Python對象存儲為文件的方法,pickle可以用二進制表示并讀寫python數(shù)據(jù),這個功能并不安全,如果把一個pickle暴露給別人,有被植入惡意程序的風(fēng)險,文中通過代碼給大家講解的非常詳細(xì),需要的朋友可以參考下

加載和保存

pickle中有兩組加載和保存函數(shù)

保存加載
交互文件dumpload
交互字節(jié)碼dumpsloads

例如

x = [i**2 for i in range(10)]
import pickle
s = pickle.dumps(x)
print(s)
# b'\x80\x04\x95\x19\x00\x00\x00\x00\x00\x00\x00]\x94(K\x00K\x01K\x04K\tK\x10K\x19K$K1K@KQe.'
with open("test.pickle", 'wb') as f:
   pickle.dump(x, f)        # 將x存為f

x存儲為文件之后,還可以重新打開

with open("test.pickle", 'rb') as f:
    y = pickle.load(f)

print(y)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

注意事項

除了不夠安全之外,使用pickle另外一個需要注意的是,到目前為止,pickle已經(jīng)有6個版本,其中v0v1過于古老,基本沒什么能用的地方;v3以后的版本則不再支持Python2,下表列出了自v2v5的一些更新特性

引入版本文檔
v2Python 2.3PEP307為 新式類 提供了更高效的封存機制。
v3Python 3.0顯式地支持字節(jié)對象
為Python 3.0-3.7 的默認(rèn)協(xié)議。
v4Python 3.4PEP 3154支持存儲較大對象,并針對數(shù)據(jù)格式進行了優(yōu)化
Python 3.8使用的默認(rèn)協(xié)議。
v5Python 3.8PEP 574增加對帶外數(shù)據(jù)的支持,并可加速帶內(nèi)數(shù)據(jù)處理

理論上講,pickle可以封裝一切python對象,所以對于一些比較耗時的算法,可以通過pickle來保存當(dāng)前的狀態(tài)。但要注意,盡管pickle可以封存函數(shù),但并不能封存匿名函數(shù)

test = lambda x : x
s = pickle.dumps(test)  # 報錯
def test(x):
    print(x)

s = pickle.dumps(test)
print(s)
#b'\x80\x04\x95\x15\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x04test\x94\x93\x94.'

copyreg

python標(biāo)準(zhǔn)庫中還提供了copyreg模塊,可以注冊一個封存函數(shù),在對某個對象進行封存時可調(diào)用。示例如下

import copyreg, pickle
class C:
    def __init__(self, a):
        self.a = a

def pickle_c(c):
    print("您封存了一個C對象")
    return C, (c.a,)

copyreg.pickle(C, pickle_c)
c = C(1)

p = pickle.dumps(c)
# 您封存了一個C對象

在通過copyreg.pickle對類型C注冊函數(shù)pickle_c之后,再去用pickle.dumps對c的對象進行封存,就會調(diào)用pickle_c,從而打印出預(yù)設(shè)的字符串。

在copyreg.pickle中注冊的函數(shù),必須返回一個字符串或包含二至六個元素的元組。

命令行工具

python標(biāo)準(zhǔn)庫還提供了pickle的命令行工具,調(diào)用格式如下,其中x.pickle是一個封裝了python對象的二進制文件。

python -m pickle x.pickle

常見的命令行選項如下表

指令說明
-a–annotate使用簡短的操作碼描述來標(biāo)注每一行。
-o–output=<file>輸出應(yīng)當(dāng)寫入到的文件名稱。
-l–indentlevel=<num>一個新的 MARK 層級所需縮進的空格數(shù)。
-m–memo當(dāng)反匯編多個對象時,保留各個反匯編的備忘記錄。
-p–preamble=<preamble>當(dāng)指定一個以上的 pickle 文件時,在每次反匯編之前打印給定的前言。

以上就是關(guān)于如何把Python對象存儲為文件的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python對象存儲為文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python編程利用科赫曲線實現(xiàn)三維飄雪效果示例過程

    Python編程利用科赫曲線實現(xiàn)三維飄雪效果示例過程

    這篇文章主要介紹了Python編程實現(xiàn)三維飄雪效果示例過程,通過本示例你可以自己做出一個浪漫的雪花飄落效果,有需要的朋友可以借鑒參考下
    2021-10-10
  • Python爬蟲爬取微信朋友圈

    Python爬蟲爬取微信朋友圈

    這篇文章主要介紹了Python爬蟲爬取微信朋友圈的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)Python爬蟲,感興趣的朋友可以了解下
    2020-08-08
  • Python使用PyNmap進行網(wǎng)絡(luò)掃描的詳細(xì)步驟

    Python使用PyNmap進行網(wǎng)絡(luò)掃描的詳細(xì)步驟

    使用 PyNmap 進行網(wǎng)絡(luò)掃描是一個非常有效的方式,PyNmap 是 Nmap 工具的一個 Python 封裝,它允許你在 Python 腳本中使用 Nmap 的強大功能,本文介紹了如何使用 PyNmap 進行網(wǎng)絡(luò)掃描的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08
  • python實現(xiàn)socket簡單通信的示例代碼

    python實現(xiàn)socket簡單通信的示例代碼

    這篇文章主要介紹了python實現(xiàn)socket簡單通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Python可變參數(shù)函數(shù)用法實例

    Python可變參數(shù)函數(shù)用法實例

    這篇文章主要介紹了Python可變參數(shù)函數(shù)用法,實例分析了Python可變參數(shù)函數(shù)的定義與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 一文詳解如何從Python直接導(dǎo)入C++代碼文件

    一文詳解如何從Python直接導(dǎo)入C++代碼文件

    通過結(jié)合cppimport、pybind11和cffi的力量,開發(fā)人員可以直接在Python中集成現(xiàn)有的C/C++庫或編寫關(guān)鍵性能函數(shù),從而提升應(yīng)用程序性能并提高開發(fā)生產(chǎn)力,下面小編就和大家介紹一下具體步驟吧
    2026-03-03
  • Tensorflow?2.1完成對MPG回歸預(yù)測詳解

    Tensorflow?2.1完成對MPG回歸預(yù)測詳解

    這篇文章主要為大家介紹了Tensorflow?2.1完成對MPG回歸預(yù)測詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法

    Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法

    這篇文章主要介紹了Pycharm打印大數(shù)據(jù)文件顯示不全的解決方法,昨晚寫了個小爬蟲,簡單分析下發(fā)現(xiàn)可以修改請求的url,直接獲取所有目標(biāo)的數(shù)據(jù),想先打印在控制臺看看,發(fā)現(xiàn)打印的數(shù)據(jù)不全,所以本文記錄了一下解決方法,需要的朋友可以參考下
    2024-03-03
  • Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運行的方法(圖解))

    Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運行的方法(圖解))

    這篇文章主要介紹了Pycharm使用遠(yuǎn)程linux服務(wù)器conda/python環(huán)境在本地運行的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 8個Python中批量處理數(shù)據(jù)的核心庫使用指南

    8個Python中批量處理數(shù)據(jù)的核心庫使用指南

    處理數(shù)據(jù)的時候,我發(fā)現(xiàn) Excel 有時候不好用,不是說它的功能不好用,而是它的隱形轉(zhuǎn)換和不可復(fù)現(xiàn)輸在起跑線上了,所以本文整理了一套 Python 工具棧,有需要的小伙伴可以了解下
    2026-01-01

最新評論

新郑市| 扎赉特旗| 沁阳市| 扶沟县| 泰兴市| 会泽县| 尖扎县| 长沙县| 雷山县| 崇礼县| 花莲县| 柳林县| 玛多县| 仁布县| 简阳市| 广东省| 揭西县| 清远市| 兴义市| 广昌县| 石台县| 怀来县| 惠水县| 鱼台县| 光山县| 鹤壁市| 淮滨县| 聊城市| 赣榆县| 昌江| 灯塔市| 安岳县| 乾安县| 札达县| 全椒县| 雅江县| 阿图什市| 萨嘎县| 神池县| 无棣县| 龙门县|