Python sys模組常用方法

2020-07-16 10:05:23
上節提到模組和庫是不同的東西,作用也不完全相同。內建模組使用 C語言編寫,提供了對系統功能的存取,例如 sys 模組並不在Lib目錄下。但在 Lib 目錄下可以找到 string.py、uuid.py 等模組,這些模組提供了 Python 內建對字串、日期、時間、雜湊、佇列等功能的支援。雖然Python內建模組和標準庫並不是同一種東西,但大多數情況下在使用時並沒有對這二者進行詳細區分。

安裝完畢Python 3.7.2後,可用的內建模組和標準庫共計 224 個,以下簡單介紹常用的 sys 模組和 datetime 模組(庫)的基本功能,其他內建模組(庫)的相關功能可參看Python文件。本節教學先來介紹 sys 模組。datetime 模組下節介紹。

sys 模組提供了一系列有關 Python 執行環境的變數和函數,其常用屬性和方法如表 1 所示。

表 1:sys 模組常用屬性和方法
屬性或方法 描述
sys.argv 獲取命令列參數列,第一個引數是程式本身
sys.exit(n) 退出 Python 程式,exit(0) 表示正常退出。當引數非 0 時,會引發一個 SystemExit 異常,可以在程式中捕獲該異常
sys.version 獲取 Python 解釋程器的版本資訊
sys.maxsize 最大的 Int 值,在 64 位元運算系統上是 263-1
sys.path 返回模組的搜尋路徑,初始化時使用 PYTHONPATH 環境變數的值
sys.platform 返回作業系統平台名稱
sys.stdin 輸入相關
sys.stdout 輸出相關
sys.stderr 錯誤相關
sys.exc_infd() 返回異常資訊三元元組
sys.getdefaultencoding() 獲取系統當前編碼,預設為 UTF-8
sys.setdefaultencoding() 設定系統的預設編碼
sys.getfilesystemencoding() 獲取檔案系統使用編碼方式,預設是 UTF-8
sys.modules 以字典的形式返回所有當前 Python 環境中已經匯入的模組
sys.builtin_module_names 返回一個列表,包含所有已經編譯到 Python 直譯器裡的模組的名字
sys.copyright 當前 Python 的版權資訊
sys.flags 命令列標識狀態資訊列表
sys.getrefcount(object) 返回物件的參照數量
sys. getrecursionlimit() 返回 Python 最大遞迴深度,預設為 1000
sys.getsizeof(object[, default]) 返回物件的大小
sys.getswitchinterval() 返回執行緒切換時間間隔,預設為0.005秒
sys.setswitchinterval(interval) 設定執行緒切換的時間間隔,單位為秒
sys. getwindowsversion() 返回當前 Windows 系統的版本資訊
sys.hash_info 返回 Python 預設的雜湊方法的引數
sys.implementation 當前正在執行的 Python 直譯器的具體實現,如 CPython
sys.thread_info 當前執行緒資訊

以下是呼叫表 1 中部分屬性或方法的程式碼:
import sys
sys.version
sys.platform
sys.getdefaultencoding()
sys.copyright
sys.getwindowsversion()
sys.implementation
上述程式碼的執行結果如下所示:

>>> import sys
>>> sys.version
'3.7.2rc1 (tags/v3.7.2:9a3ffc0492, Apr 23 2020, 21:39:28) [MSC v.1916 64 bit (AMD64)]'
>>> sys.platform
'win32'
>>> sys.getdefaultencoding()
'utf-8'
>>> sys.copyright
'Copyright (c) 2001-2020 Python Software Foundation.nAll Rights Reserved.nnCopyright (c) 2000 BeOpen.com.nAll Rights Reserved.nnCopyright (c) 1995-2001 Corporation for National Research Initiatives.nAll Rights Reserved.nnCopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.nAll Rights Reserved.'
>>> sys.getwindowsversion()
sys.getwindowsversion(major=10, minor=0, build=17763, platform=2, service_pack='')
>>> sys.implementation
namespace(cache_tag='cpython-38', hexversion=50856897, name='cpython', version=sys.version_info(major=3, minor=8, micro=3, releaselevel='candidate', serial=1))