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模組實現了基本的資料序列和反序列化
python之re模組(正則表示式)常用函式
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載入的模組分為四個通用類別 :
Python之time模組的時間戳、時間字串格式化與轉換(13位時間戳)
Python處理時間和時間戳的內建模組就有time,和datetime兩個,本文先說time模組。 關於時間戳的幾個概念 時間戳,根據1970年1月1日00:00:00開始按秒計算的偏移量。 時間元組(struct_time),包含9個元素。 t
python之urllib模組urlretrieve()函式初窺
今天在使用python的庫urllib做實驗的時候接觸到了urlretrieve()這個函式,個人感覺很有意思,可能是因為之前一直都沒有使用過這樣簡潔的函式,urllib模組可以很容易的獲取網際網路上頁面的html內容,之後可以利用re模組提供的正則表示式來提取自己
利用python的pickle模組儲存和讀寫任意的python資料結構
上文中提到PyQt的QDataStream類對Python型別和PyQt型別的資料進行讀寫操作,同樣python自身提供了標準pickle模組可對任意的python資料結構進行儲存和讀寫,當然pickle模組可以對Qt的資料型別進行儲存和讀寫。其實QDataSt
Python之struct模組(處理二進位制)
有的時候需要用python處理二進位制資料,比如,存取檔案,socket操作時.這時候,可以使用python的struct模組來完成.可以用 struct來處理c語言中的結構體. struct模組中最重要的三個函式是pack(), unpack(), calcsize(
Python基礎總結之第九天開始【python之OS模組對目錄的操作、以及操作檔案】(新手可相互督促)
年薪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帶
談談Python之Django搭建企業級官網(第三篇上部)
則表達式 oss 不能 目的 SHH oba 解釋 合成 %s 轉載請註明來源地址和原作者(CFishHome) 前沿 上一節的學前準備工作和第一個小牛試刀的Django項目學習,讓我們對Django開發越來越感興趣了。正所謂趁熱打鐵,讓我們繼續來學習網站開發必備的視圖函數
談談Python之Django搭建企業級官網(第三篇下部)
Django項目 原因 解釋 新用戶 rev type shortcuts 編寫 out 轉載請註明來源地址和原作者(CFishHome) 前沿 上一篇文章我們學習了URL與視圖函數的映射、傳遞參數的三種方式、轉換器的簡單使用和include函數分層映射管理。接下來這一篇文