簡明Python3教程 16.標准庫


簡介

python標准庫作為python標准安裝的一部分,其自身包含數量龐大的實用模塊,

因此熟悉python標准庫非常重要,因為很多問題都能利用python標准庫快速解決。

下面我們將研究標准庫中的一些常用模塊。完整的標准庫模塊列表可以在安裝python時附帶的文檔中的’Library Reference’一節找到。

現在就讓我們來看看這些模塊吧。

 

提示

如果你感覺本章內容對於你過於超前,那么可以跳過本章。但是當你熟悉python編程后我強烈建議你把這章補上。

 

sys模塊

sys模塊包含一些系統相關的功能。先前我們已經見識過sys.argv列表,它包括命令行參數。

假設我們想要檢查所使用的python命令行的版本,比方說我們需要確定正在使用的版本不低於3

諸如此類的功能正是sys模塊所提供的。

>>> import sys

>>> sys.version_info

(3, 0, 0, 'beta', 2)

>>> sys.version_info[0] >= 3

True

代碼如何工作:

sys模塊含有一個version_info元組用於提供版本信息。其第一個元素為主版本。

因此我們可以通過檢查它確保程序只會運行在python 3.0和3.0以上:

#!/usr/bin/python

# Filename: versioncheck.py

import sys, warnings

if sys.version_info[0] < 3:

    warnings.warn("Need Python 3.0 for this program to run",

        RuntimeWarning)

else:

    print('Proceed as normal')

輸出:

    $ python2.5 versioncheck.py

    versioncheck.py:6: RuntimeWarning: Need Python 3.0 for this program to run

      RuntimeWarning)

   

    $ python3 versioncheck.py

    Proceed as normal

代碼如何工作:

這里我們使用標准庫中另一個名為warnings的模塊,用於向最終用戶顯示警告信息。

如果python版本號小於3,則顯示相應的警告。

 

loggin模塊

如果你希望得到存儲在某處的重要信息或調試信息,以便檢查程序是否如期運行時該咋辦呢?你如何將這些信息存儲在某處呢?

這些可以通過logging模塊做到。

#!/usr/bin/python

# Filename: use_logging.py

import os, platform, logging

if platform.platform().startswith('Windows'):

    logging_file = os.path.join(os.getenv('HOMEDRIVE'),

os.getenv('HOMEPATH'), 'test.log')

else:

    logging_file = os.path.join(os.getenv('HOME'), 'test.log')

logging.basicConfig(

    level=logging.DEBUG,

    format='%(asctime)s : %(levelname)s : %(message)s',

    filename = logging_file,

    filemode = 'w',

)

logging.debug("Start of the program")

logging.info("Doing something")

logging.warning("Dying now")

輸出:

    $python use_logging.py

    Logging to C:/Users/swaroop/test.log

If we check the contents of test.log, it will look something like this:

    2008-09-03 13:18:16,233 : DEBUG : Start of the program

    2008-09-03 13:18:16,233 : INFO : Doing something

    2008-09-03 13:18:16,233 : WARNING : Dying now

代碼如何工作:

我們使用了3個標准庫模塊 – os模塊與系統交互,platform模塊取得平台信息,即操作系統信息。而logging模塊用於記錄日志信息。

首先,我們通過platform.platform(詳見import platform; help(platform))返回的字符串檢測操作系統類型。

如果為windows系統,則分別計算出主驅動器,主目錄與文件名,這個文件用於存儲相關信息。然后將這三部分合並得到文件的全路徑。

對於其他平台,我們只需得到用戶的主目錄就能計算出文件的全路徑了。

我們之所以沒有簡單的使用字符串連接合並這三部分而是利用os.path.join,原因在於這個特殊的函數可以確保路徑格式符合特定系統的規范。

之后我們配置logging模塊,指示在我們指定的文件中以特殊的格式寫入所有信息。

最后,我們就能寫入信息了,它們可以是調試信息,警告信息甚至是危機信息(critical messages)。

一但程序開始運行,我們就可以檢查這個文件以了解程序發生了什么,而用戶並不會看到這些信息。

 

urllibjson模塊

如果我們讓自己編寫的程序在web上獲得搜索結果是不是很有趣呢?我們現在就來研究下。

這個功能可以通過少量模塊實現。第一urllib模塊使得我們可以訪問internet上的任何網頁。

這里我們准備利用雅虎搜索獲得搜索結果,它恰好以一種被稱作JSON的格式為我們提供搜索結果。

這種格式分析起很方便,因為我們使用的是標准庫中的內建json模塊。

#!/usr/bin/python

# Filename: yahoo_search.py

import sys

if sys.version_info[0] != 3:

    sys.exit('This program needs Python 3.0')

import json

import urllib, urllib.parse, urllib.request, urllib.response

# Get your own APP ID at http://developer.yahoo.com/wsregapp/

YAHOO_APP_ID =

'jl22psvV34HELWhdfUJbfDQzlJ2B57KFS_qs4I8D0Wz5U5_yCI1Awv8.lBSfPhwr'

SEARCH_BASE =

'http://search.yahooapis.com/WebSearchService/V1/webSearch'

class YahooSearchError(Exception):

    pass

# Taken from http://developer.yahoo.com/python/python-json.html

def search(query, results=20, start=1, **kwargs):

    kwargs.update({

        'appid': YAHOO_APP_ID,

        'query': query,

        'results': results,

        'start': start,

        'output': 'json'

    })

    url = SEARCH_BASE + '?' + urllib.parse.urlencode(kwargs)

    result = json.load(urllib.request.urlopen(url))

    if 'Error' in result:

        raise YahooSearchError(result['Error'])

    return result['ResultSet']

query = input('What do you want to search for? ')

for result in search(query)['Result']:

    print("{0} : {1}".format(result['Title'], result['Url']))

代碼如何工作:

(注:這個例子目前有錯誤,暫且跳過)

 

Module of the Week系列

標准庫中還有更多內容有待探索,例如debug(http://docs.python.org/dev/library/pdb.html),

處理命令行選項(http://docs.python.org/py3k/library/getopt.html),

正則表達式(http://www.diveintopython.org/regular_expressions/index.html)等等。

而進一步研究標准庫的最好辦法就是閱讀Python Module of the Week系列了(http://www.doughellmann.com/projects/PyMOTW/)。

 

小結

我們已經探索了許多標准庫模塊中的功能。強烈推薦瀏覽python標准庫文檔以便對所有模塊有個概念性的認識(http://docs.python.org/py3k/library/)

接下來,我們將概覽python的方方面面讓我們的python之旅更加完整

 

 

 

--------------Python書籍推薦-----------------
Python基礎教程-第2版.修訂版 
 
 
PYTHON核心編程
 
 
零基礎學Python


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM