1. 程式人生 > >python 之pickle模組--輸出儲存到文字(基本的資料序列和反序列化)

python 之pickle模組--輸出儲存到文字(基本的資料序列和反序列化)

字典輸出到文字該如何輸出呢?遍歷字典,輸出也麻煩了,而且字典沒有按順序儲存,讀起來也麻煩。這個需求,導致的結果就是發現了這個好用的模組。

下面是一個字典的例項:

#!/usr/bin/env python
#-*- coding: utf-8 -*-
#filename:pickle_use.py

import pickle, pprint


def pickle_save():#使用pickle模組將資料物件儲存到檔案
    contact = {'julius1':{'cellphone':'13800000000','tel':'0512-34343534','qq':'354564656'},
               'julius2':{'cellphone':'13300000000','tel':'0513-34343534','qq':'454564656'},
               'julius3':{'cellphone':'13400000000','tel':'0514-34343534','qq':'554564656'},
               'julius4':{'cellphone':'13500000000','tel':'0515-34343534','qq':'654564656'}
               }
    f = open('contact_list.txt','w')
    pickle.dump(contact,f)
    f.close()

def pickle_load():#使用pickle從檔案中重構python物件
    f = open('contact_list.txt','r')
    contact = pickle.load(f)
    pprint.pprint(contact)
    pprint.pprint(contact['julius2'])#從dict中按要求取值
    pprint.pprint(contact['julius3']['cellphone'])
    pprint.pprint(contact['julius4']['qq'])
    f.close()

pickle_save()
pickle_load()

輸出:

contact_list.txt:

(dp0
S'julius4'
p1
(dp2
S'qq'
p3
S'654564656'
p4
sS'cellphone'
p5
S'13500000000'
p6
sS'tel'
p7
S'0515-34343534'
p8
ssS'julius1'
p9
(dp10
g3
S'354564656'
p11
sg5
S'13800000000'
p12
sg7
S'0512-34343534'
p13
ssS'julius3'
p14
(dp15
g3
S'554564656'
p16
sg5
S'13400000000'
p17
sg7
S'0514-34343534'
p18
ssS'julius2'
p19
(dp20
g3
S'454564656'
p21
sg5
S'13300000000'
p22
sg7
S'0513-34343534'
p23
ss.
從檔案讀取:
>>> ================================ RESTART ================================
>>> 
{'julius1': {'cellphone': '13800000000',
             'qq': '354564656',
             'tel': '0512-34343534'},
 'julius2': {'cellphone': '13300000000',
             'qq': '454564656',
             'tel': '0513-34343534'},
 'julius3': {'cellphone': '13400000000',
             'qq': '554564656',
             'tel': '0514-34343534'},
 'julius4': {'cellphone': '13500000000',
             'qq': '654564656',
             'tel': '0515-34343534'}}
{'cellphone': '13300000000', 'qq': '454564656', 'tel': '0513-34343534'}
'13400000000'
'654564656'
>>> 
 基本介面:

  pickle.dump(obj, file, [,protocol])

This is equivalent to Pickler(file, protocol).dump(obj).

  註解:將物件obj儲存到檔案file中去。
     protocol為序列化使用的協議版本,0:ASCII協議,所序列化的物件使用可列印的ASCII碼錶示;1:老式的二進位制協議;2:2.3版本引入的新二進位制協議,較以前的更高效。其中協議0和1相容老版本的python。protocol預設值為0。
     file:物件儲存到的類檔案物件。file必須有write()介面, file可以是一個以'w'方式開啟的檔案或者一個StringIO物件或者其他任何實現write()介面的物件。如果protocol>=1,檔案物件需要是二進位制模式開啟的。

  pickle.load(file)

This is equivalent to Unpickler(file).load().

  註解:從file中讀取一個字串,並將它重構為原來的python物件。
  file:類檔案物件,有read()和readline()介面。

The following types can be pickled:

None, True, and False
integers, long integers, floating point numbers, complex numbers
normal and Unicode strings
tuples, lists, sets, and dictionaries containing only picklable objects
functions defined at the top level of a module
built-in functions defined at the top level of a module
classes that are defined at the top level of a module
instances of such classes whose __dict__ or the result of calling __getstate__() is picklable (see section The pickle protocol for details).


很好用的一個模組,支援很多型別的物件儲存。

http://docs.python.org/2/library/pickle.html?highlight=pickle#pickle

相關推薦

python pickle模組--輸出儲存文字基本資料序列序列

字典輸出到文字該如何輸出呢?遍歷字典,輸出也麻煩了,而且字典沒有按順序儲存,讀起來也麻煩。這個需求,導致的結果就是發現了這個好用的模組。 下面是一個字典的例項: #!/usr/bin/env python #-*- coding: utf-8 -*- #filename:

虛幻4學習筆記整理角色閒置跑步混合空間基本Speed+Direction較高階模式兩種

  大部分學習視訊做角色基礎移動的混合空間都是用Speed和Direction,如下圖:   這樣的方式比較簡單容易理解,不過我在學習的過程中學到了另一種更好的混合方式,如下圖:   這裡的MoveForwardScale和MoveRightScale可以

python爬蟲:爬取貓眼電影分數的處理多執行緒

爬取用的庫是requests和beautifulsoup,程式碼編寫不難,主要是個別的細節處理需要注意 1、電影得分的處理 右鍵審查元素,我們看到分數的整數部分和小數部分是分開的,在beautifulsoup中,我們可以用(.strings或者.stripped_stri

Python物件的永久儲存模組---pickle

經常遇到在Python程式執行中得到了一些字串、列表、字典等資料,想要長久的儲存下來,方便以後使用,而不是簡單的放入記憶體中關機斷電就丟失資料。 這個時候Pickle模組就派上用場了,它可以將物件轉換為一種可以傳輸或儲存的格式。  python的pickle模組實現了基本的資料序列和反序列化

pythonre模組正則表示式常用函式

1、compile() 編譯正則表示式模式,返回一個物件的模式。(可以把那些常用的正則表示式編譯成正則表示式物件,這樣可以提高一點效率。) 格式: re.compile(pattern,flags=0) pattern: 編譯時用的表示式字串。 flags 編譯標誌位,用於修改正

Python學習【第9篇】:Python常用模組時間模組序列模組 常用模組2

常用模組2 一、time模組 表示時間的三種方式:   時間戳:數字(計算機能認識的)   時間字串:t='2012-12-12'

Python學習【第8篇】:Python常用模組主要是正則以及collections模組 python--------------常用模組正則

python--------------常用模組之正則 一、認識模組     什麼是模組:一個模組就是一個包含了python定義和宣告的檔案,檔名就是加上.py的字尾,但其實import載入的模組分為四個通用類別 :

Pythontime模組的時間戳、時間字串格式化與轉換13位時間戳

Python處理時間和時間戳的內建模組就有time,和datetime兩個,本文先說time模組。 關於時間戳的幾個概念 時間戳,根據1970年1月1日00:00:00開始按秒計算的偏移量。 時間元組(struct_time),包含9個元素。 t

pythonurllib模組urlretrieve函式初窺

    今天在使用python的庫urllib做實驗的時候接觸到了urlretrieve()這個函式,個人感覺很有意思,可能是因為之前一直都沒有使用過這樣簡潔的函式,urllib模組可以很容易的獲取網際網路上頁面的html內容,之後可以利用re模組提供的正則表示式來提取自己

利用pythonpickle模組儲存讀寫任意的python資料結構

上文中提到PyQt的QDataStream類對Python型別和PyQt型別的資料進行讀寫操作,同樣python自身提供了標準pickle模組可對任意的python資料結構進行儲存和讀寫,當然pickle模組可以對Qt的資料型別進行儲存和讀寫。其實QDataSt

Pythonstruct模組處理二進位制

有的時候需要用python處理二進位制資料,比如,存取檔案,socket操作時.這時候,可以使用python的struct模組來完成.可以用 struct來處理c語言中的結構體. struct模組中最重要的三個函式是pack(), unpack(), calcsize(

Python基礎總結第九天開始【pythonOS模組對目錄的操作、以及操作檔案】新手可相互督促

年薪20萬的夢想。。。         python對檔案、目錄能做什麼?或者說我們需要python替我們做什麼?最經常的操作就是對檔案的:開啟、關閉、讀取、寫入、修改、儲存等等對目錄的操作,無非就是:建立目錄、刪除目錄、更改目錄名字等等。我們先認識一下OS模組,os

python路——作業:Select FTP僅供參考

view info warn phi socket split list 開始 序號 一、作業需要 使用SELECT或SELECTORS模塊實現並發簡單版FTP允許多用戶並發上傳下載文件 二、README 程序實現了以下功能: 1、用戶登錄註冊(測試用戶:japh

python函數的進階2-1

加載 gif pre span 進行 文件 chang ret 16px 動態參數: 一,*args:args是元祖,它包含了所有的位置參數。 1,第一種形參中只含*args。 def func(*args): print(*args,type(args)) f

python 操作redis數據庫非關系型數據庫,k-v

都是 ont sql 失效 font cal post nan 所有 數據庫: 1. 關系型數據庫 表結構 2. 非關系型數據庫 nosql (k - v 速度快),常用的時以下三種: memcache 存在內存裏 redis 存在內存裏 mangod

Python固定樣式輸出

put %s for AR 固定 bsp name mat NPU 輸出樣式為: ---------Info of aaa-------- name:aaa age:23 job:IT salary:20000 方法一: name =input("name:") age

python文件的讀寫2

import 文件讀寫 哈哈 進入 imp std 技術 都是 繼續 小R昨天因為在研究weblogic的漏洞就沒來得及學習python(好吧,這都是借口,懶了,大家可不能像我這樣。要堅持每天都學)。 這個進度是有點慢呀。哎呀,沒事沒事,我還年輕,才20歲。 哈哈,玩

python路:用戶輸入

老師 用法 inf 代碼 用戶輸入 display 用戶 -- class python之路:用戶輸入(一) 好了,現在我學了點博客的用法,現在不會像以前的那麽土了。好吧,不多說,我要講課了。 今天,我會用情景實例給大家說這個用戶輸入。 情景是:你是IT教育的python帶

談談PythonDjango搭建企業級官網第三篇上部

則表達式 oss 不能 目的 SHH oba 解釋 合成 %s 轉載請註明來源地址和原作者(CFishHome) 前沿 上一節的學前準備工作和第一個小牛試刀的Django項目學習,讓我們對Django開發越來越感興趣了。正所謂趁熱打鐵,讓我們繼續來學習網站開發必備的視圖函數

談談PythonDjango搭建企業級官網第三篇下部

Django項目 原因 解釋 新用戶 rev type shortcuts 編寫 out 轉載請註明來源地址和原作者(CFishHome) 前沿 上一篇文章我們學習了URL與視圖函數的映射、傳遞參數的三種方式、轉換器的簡單使用和include函數分層映射管理。接下來這一篇文