Python 標准模塊
Python 帶有一個標准模塊庫,並發布有獨立的文檔(庫參考手冊)。對於程序員而言,標准庫與語言本身同樣重要,它好比一個百寶箱,能為各種常見的任務提供完美的解決方案。
這邊簡單介紹學習下常用的 Python 標准庫,主要包括:操作系統接口、文件通配符、系統模塊、字符串正則匹配、數學(之前 int、float 章節已介紹過)、互聯網訪問、日期和時間等。
使用這些大型模塊,dir() 及 help() 函數比較有用;當然標准庫遠不止這些,慢慢了解學習吧~
標准模塊的存放位置: Python 目錄下 lib 文件夾內,如 我的就是 C:\Python34\Lib,如有必要,可查閱對應的模塊源文件
os —— 操作系統接口
僅列出幾個常用方法
os.name 返回當前操作系統名
os.environ 當前系統所有的環境變量
os.getenv(key) 獲取某個環境變量值;若無,返回None
os.getpid() 返回當前進程PID (進程相關在UNIX系統比較實用,有比較多的方法,詳細參考對應標准庫文檔)
os.getlogin() 返回當前系統登錄用戶名
os.system(...) 運行shell命令
os.getcwd() 獲取當前工作目錄
os.chdir(path) 更改當前工作目錄
os.listdir(path) 列出目錄下的所有文件和文件夾名稱
os.path ... 文件夾及文件操作的相關函數方法,這邊暫不列出,{后續會針對此列出專題學習文件操作}
1 import os 2 # print(dir(os)) 3 # help(os) 4 print(os.name) # 當前操作系統名,定義了'posix' - Linux/Unix,'nt' - Windows,'mac','os2','ce','java' 5 print(os.environ) # 當前系統所有的環境變量 6 print(os.getenv('HOMEPATH')) # 返回某個環境變量的值;若無,返回None 7 8 print(os.getpid()) # 返回當前進程PID 9 print(os.getlogin()) # 返回當前系統登錄用戶名 10 11 os.system('cmd') # os.system() 運行shell命令,相當於啟動dos 12 13 print(os.getcwd()) # 獲取當前工作目錄 14 # os.chdir('d:\\test') # 改變當前工作目錄至 d:\\test 15 16 print(os.listdir('d:\\')) # 列出目錄下的所有文件和文件夾名稱 17 # help(os.path)
glob —— 文件通配符
glob 模塊提供了一個函數用於從目錄通配符搜索中生成文件列表
參考下例, glob.glob("*.py") 返回了所有當前工作目錄(已改為"C:\Python34\Lib")下,通配 ".py" 的文件;也可以指定絕對路徑,如 print(glob.glob("C:\\Python34\\Lib\\*.py"))
下表列出了通配模式中可以使用的通配符。這些通配符與操作系統的命令shell下的通配符並不一定完全一致,但是Python的glob模塊在所有的平台上都使用相同的語法。
注意,通配模式的語法與正則表達式的語法類似但不相同。
通配符 匹配 示例
* 0個或多個任意字符 *.m* 匹配擴展名以m開頭的名稱
? 任意單個字符 ??? 匹配恰好包含3個字符的名稱
[…] 方括號中列出的任意一個字符 [AEIOU]* 匹配以大寫的元音字母開頭的名稱
[!...] 不在方括號中出現的任意一個字符 *[!s] 匹配不以s結尾的名稱
sys —— 系統模塊
sys
模塊包含系統對應的功能。
命令行參數:通用工具腳本經常調用命令行參數,而這些以鏈表形式存儲於sys模塊的argv變量。
例如,在當前目錄下創建一 test.py 文件,內容如下,當前目錄下 cmd
cmd 下運行命令如 python test.py 111 222
getopt 模塊使用Unix getopt() 函數處理 sys.argv。更多的復雜命令行處理由argparse模塊提供
Python 版本
sys.version 提供安裝的Python的版本信息;sys.version_info 是一個元組表明Python版本信息。
1 import sys 2 print(sys.version) 3 print(sys.version_info)
操作系統類型
sys.platform 提供系統平台類型;如 win32 linux2 等
1 import sys 2 print(sys.platform)
錯誤輸出重定向和程序終止
sys 有 stdin, stdout 和 stderr 屬性,即使在 stdout 被重定向時,后者也可以用於顯示警告和錯誤信息
大多腳本的定向終止都是用 sys.exit()
re —— 字符串正則匹配
re 模塊為高級字符串處理提供了正則表達式工具。這邊簡單介紹下,{后續會針對此列出專題學習正則}。
正則效率上可能不如str自帶的方法,但功能十分強大。得益於這一點,在提供了正則表達式的語言里,正則表達式的語法都是一樣的,區別只在於語法數量不同;但不不被支持的語法通常是不常用的部分。
如果已經在其他語言里使用過正則表達式,只需要簡單看一看就可以上手了。
舉個簡單的例子如下:(findall() 函數搜索string,以列表形式返回全部能匹配的子串)
1 import re 2 print(re.findall(r'\d+','one1two2three3four4')) # 這邊正則表示僅匹配數字 3 print(re.findall(r'\bf[a-z]*','which foot or hand fell fastest')) # 表示僅輸出 f 開頭的單詞
urllib —— 互聯網訪問
2.x版本的python可以直接使用import urllib來進行操作,但是3.x版本的python使用的是import urllib.request來進行操作;{后續會針對此列出專題學習網絡訪問相關操作}
舉個簡單的例子如下:
1 from urllib.request import urlopen 2 print(urlopen("http://www.baidu.com").read()) # 會 print 出百度的html源代碼
datetime —— 日期和時間
datetime 模塊為日期和時間處理提供了方法。支持日期和時間算法的同時,還可格式化輸出。{后續會針對此列出專題學習日期和時間相關}
舉個簡單的例子如下:
1 from datetime import date 2 print(date.today()) 3 now = date.today() 4 print(now.strftime("%m-%d-%y,%A")) # 格式化輸出 5 birthday = date(1990,7,7) 6 age = now - birthday # 時間處理 7 print(age.days)