os子產品提供了不少與作業系統相關聯的函數。例如:
建議使用 "import os" 風格而非 "from os import *"。這樣可以保證随作業系統不同而有所變化的 os.open() 不會覆寫内置函數 open()。
在使用 os 這樣的大型子產品時内置的 dir() 和 help() 函數非常有用,例如:
針對日常的檔案和目錄管理任務,shutil 子產品提供了一個易于使用的進階接口:
<br>
glob子產品提供了一個函數用于從目錄通配符搜尋中生成檔案清單:
通用工具腳本經常調用指令行參數。這些指令行參數以連結清單形式存儲于 sys 子產品的 argv 變量。例如在指令行中執行 "python demo.py one two three" 後可以得到以下輸出結果:
其實就是說,當我們在Linux系統中執行一個python腳本時,通常會給這個腳本一些參數,例如:
[root@server ~]# python demo.py one two three
然後通過sys 子產品的 argv 變量,就可以得到腳本的檔案名,和執行時所傳遞的參數。這和在shell腳本中,使用\$0、\$1、\$2、\$3... 等去獲得腳本檔案名稱和參數值的道理是一樣的。例如:
sys 還有 stdin,stdout 和 stderr 屬性,即使在 stdout 被重定向時,後者也可以用于顯示警告和錯誤資訊,類似于java中的out和err。
大多腳本的定向終止都使用 "sys.exit()",類似于shell的exit。代碼示例:
運作結果:
sys.exit()會終止整個腳本。
re子產品為進階字元串處理提供了正規表達式工具。對于複雜的比對和處理,正規表達式提供了簡潔、優化和快速的解決方案,被稱為文本比對中的”瑞士××ד:
如果隻需要簡單的功能,應該首先考慮字元串的方法,因為它們非常簡單,易于閱讀和調試,正規表達式可讀性差是它的缺點:
math子產品為浮點運算提供了對底層C語言函數庫的通路,因為math子產品主要是用來進行數學方面的計算或業務處理的:
random子產品提供了生成随機數的工具:
有幾個子產品用于通路網際網路以及處理網絡通信協定。其中最簡單的兩個是用于處理從 urls 接收的資料的 urllib.request 以及用于發送電子郵件的 smtplib:
注意第二個例子需要本地有一個在運作的郵件伺服器。
datetime子產品為日期和時間處理同時提供了簡單和複雜的方法。
支援日期和時間算法的同時,實作的重點放在更有效的處理和格式化輸出。
該子產品還支援時區處理:
關于表示時間的字元:
%Y 表示四位的年
%y 表示兩位的年
%m 表示兩位的月
%d 表示兩位的日期
%b 表示月份的縮寫
%A 表示星期幾
%B 表示幾月份
以下子產品直接支援通用的資料打包和壓縮格式:zlib,gzip,bz2,zipfile,以及 tarfile。
有些使用者對了解解決同一問題的不同方法之間的性能差異很感興趣。Python 提供了一個度量工具,為這些問題提供了直接答案。
例如,使用元組封裝和拆封來交換元素看起來要比使用傳統的方法要誘人的多,timeit 證明了現代的方法更快一些。
0.0248861886867416 0.02537090072342609
相對于 timeit 的細粒度,profile 和 pstats 子產品提供了針對更大代碼塊的時間度量工具。
開發高品質軟體的方法之一是為每一個函數開發測試代碼,并且在開發過程中經常進行測試
doctest子產品提供了一個工具,掃描子產品并根據程式中内嵌的文檔字元串執行測試。
測試構造如同簡單的将它的輸出結果剪切并粘貼到文檔字元串中。
通過使用者提供的例子,它強化了文檔,允許 doctest 子產品确認代碼的結果是否與文檔一緻:
unittest子產品不像 doctest子產品那麼容易使用,不過它可以在一個獨立的檔案裡提供一個更全面的測試集:
本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2044833,如需轉載請自行聯系原作者