Python 常用模組續

來源:互聯網
上載者:User

標籤:logging   json   pickle   shelve   

一、logging

用於記錄日誌併線程安全的模組

import logginglogging.basicConfig(level=logging.DEBUG,                    format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,                    datefmt=‘%Y-%m-%d %H:%M:%S %p‘,                    filename=‘log.txt‘,                    filemode=‘w‘                    )logging.debug("debug messages")logging.info("info messages")logging.warning("warning messages")logging.error("error messages")logging.critical("critical messages")

日誌文本結果

2018-03-23 10:33:43 AM - root - DEBUG -os_module:  debug messages2018-03-23 10:33:43 AM - root - INFO -os_module:  info messages2018-03-23 10:33:43 AM - root - WARNING -os_module:  warning messages2018-03-23 10:33:43 AM - root - ERROR -os_module:  error messages2018-03-23 10:33:43 AM - root - CRITICAL -os_module:  critical messages

日誌基本配置選項:

Format Description
filename 指定記錄檔名
filemode 指定動作記錄檔案的模式,預設是‘a’
format 記錄日誌的格式
datefmt 記錄日期時間的格式
style 樣式
level 指定要記錄的記錄層級
stream 使用指定的流初始化,與filename不可同時配置
handlers 指定iterable,與filename和stream不相容

日誌等級:

level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

日誌格式:

更多日誌詳細資料請猛擊這裡

二、json,pickle,shelve

在程式運行時儲存資料的一種方法是把所有資料以格式化的方式寫入一個簡單的文字檔中,只要儲存和裝載的工具在所選格式上達成一致,我們就可以隨心所欲地使用任何自訂格式。
1、pickle
pickle模組將記憶體中的Python對象轉化為序列化的位元組流,這是一種可以寫入任何類似檔案對象的位元組串,同時,pickle模組也可以根據序列化的位元組流重新構建原來記憶體中的對象。
轉換並寫入檔案:

import pickledb = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}dbfile = open(‘pickle_db‘,‘wb‘)pickle.dump(db,dbfile)dbfile.close()

從檔案中讀取資料:

import pickledbfile = open(‘pickle_db‘,‘rb‘)pickle.load(dbfile)dbfile.close()

直接轉換,不寫入檔案:

import pickledb = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}a = pickle.dumps(db)print("a:",a)b = pickle.loads(a)print("b:",b)
a: b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x08\x00\x00\x00Eric Jiaq\x02X\x03\x00\x00\x00ageq\x03X\x02\x00\x00\x0018q\x04X\x03\x00\x00\x00jobq\x05X\x03\x00\x00\x00opsq\x06X\x03\x00\x00\x00payq\x07K\xc8u.‘b: {‘name‘: ‘Eric Jia‘, ‘age‘: ‘18‘, ‘job‘: ‘ops‘, ‘pay‘: 200}

2、json
json主要用於python資料類型與字串之間的轉換,用法與pickle一致

1、dump:轉換為字串存入檔案import jsondb = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}dbfile = open(‘json_db‘,‘w‘)json.dump(db,dbfile)dbfile.close()2、load:從檔案中取出並轉換為Python資料對象dbfile = open(‘json_db‘,‘r‘)json.load(dbfile)dbfile.close()3、dumps,loads:直接轉換,不寫入檔案db = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}a = json.dumps(db)print(a)b = json.loads(a)print(b)

3、shalve
pickle和json可以將python資料類型持久儲存,假如你的檔案系統可以處理任意多需要的檔案,每個檔案都是一個單獨的pickle檔案,這樣可以避免修改一條記錄時都要重新載入和儲存整個資料庫,這就需要將每個pickle檔案名稱當作字典的鍵來儲存,通過索引值來訪問資料,Python標準庫為我們提供了一個名為shelves的模組來做這些事。
建立shelve資料庫

N1 = {‘name‘:‘Eric Jia‘,‘age‘:‘18‘,‘job‘:‘ops‘,‘pay‘:200}N2 = {‘name‘:‘Bob smith‘,‘age‘:‘28‘,‘job‘:‘java‘,‘pay‘:2000}N3 = {‘name‘:‘David‘,‘age‘:‘38‘,‘job‘:‘go‘,‘pay‘:20000}import shelvedb = shelve.open(‘make_db‘)db[‘N1‘] = N1db[‘N2‘] = N2db[‘N3‘] = N3db.close()

建立出的shelve資料庫如下

重新開啟shelve並通過鍵來取得資料

import shelvedb = shelve.open(‘make_db‘)for key in db:    print(key,"=>",db[key])db.close()輸出:N1 => {‘name‘: ‘Eric Jia‘, ‘age‘: ‘18‘, ‘job‘: ‘ops‘, ‘pay‘: 200}N2 => {‘name‘: ‘Bob smith‘, ‘age‘: ‘28‘, ‘job‘: ‘java‘, ‘pay‘: 2000}N3 => {‘name‘: ‘David‘, ‘age‘: ‘38‘, ‘job‘: ‘go‘, ‘pay‘: 20000}

小結:
1、shelve內部會使用pickle來序列化和還原序列化記錄,它的介面像pickle一樣簡單:與字典相同,只是增加了open和close調用。
2、pickle用於python特有的類型和python的資料類型間進行轉換,是python專屬的
3、json用於字串和python資料類型間進行轉換,所有程式語言都可用。

Python 常用模組續

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.