1. 獲取作業系統信息
> import sys
# 在window上執行
> sys.platform
'win32'
# 在linux上執行
> sys.platform
'linux2'
經典的使用場景, 針對只適用於linux平臺的代碼,通過sys來判斷當前作業系統是否符合要求。
2. 獲取python版本信息
> sys.version
'3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)]'
> sys.version_info
sys.version_info(major=3, minor=8, micro=2, releaselevel='final', serial=0)
> ver = sys.version_info
> ver.major
3
> ver.minor
8
> ver.micro
2
對於python版本有限制的代碼,可以通過以上方法來判斷python版本是否符合要求。
3. 獲取編碼方式
> sys.getdefaultencoding()
'utf-8'
在python3中,默認的編碼方式為utf8, 所以不再需要像python2那樣,自己手動設置編碼格式為utf-8。
4. 標準輸入,輸出和錯誤流
sys模塊提供了變量來表示標準輸入,輸出和錯誤流,列表如下
sys.stdin, 標準輸入流
sys.stdout,標準輸出流
sys.stderr,標準錯誤流
具有文件句柄類似的操作,可以從標準輸入流讀取信息,向標準輸出和標準錯誤流寫入信息,用法如下
'stderr info\n') > sys.stderr.write(
stderr info
12
'stdout info\n') > sys.stdout.write(
stdout info
12
5. 中斷執行
可以通過sys.exit函數來中斷代碼的執行,用法如下
> sys.exit()
該函數也可以添加一個參數,默認為0,表示正常退出,其他參數表示非正常退出,支持用字符串來自定義錯誤信息。
6. sys.path
該變量存儲了python尋找模塊的路徑
> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
可以在代碼中動態修改sys.path列表中的元素,已達到成功導入某個模塊的目的。
7. sys.module
該變量是一個字典,存儲了已經導入的模塊
> import sys
> sys.modules.keys()
dict_keys(['abc', '_signal', 'sitecustomize', 'sys', '_collections_abc', '_weakrefset', '_sitebuiltins', '_weakref', 'sysconfig', 'encodings.utf_8', '__main__', 'apport_python_hook', '_sysconfigdata_m', 'posixpath', 'site', 'readline', 'stat', 'encodings', 'encodings.latin_1', 'zipimport', 'encodings.aliases', '_frozen_importlib_external', 'io', '_frozen_importlib', '_imp', 'atexit', 'os', '_stat', '_sysconfigdata', 'os.path', '_codecs', '_thread', 'posix', 'marshal', 'codecs', '_warnings', 'builtins', 'errno', 'genericpath', 'rlcompleter', '_io'])
8. 獲取命令行參數
sys.argv是一個列表, 該列表存儲了命令行參數,當採用腳本方式運行時,可以方便的處理命令行參數。假設一個python腳本名為test.py,其中的內容如下
import sys
for arg in sys.argv:
print(arg)
在作業系統中運行該腳本,會列印命令行參數的內容
> python test.py arg1 arg2
test.py
arg1
arg2
可以看出,sys.argv的第一個元素是腳本的名字,接下來為傳遞給腳本的命令行參數。對於簡單的腳本編程,用這種方式來捕獲命令行參數是非常方便的。當然,對於命令行參數的傳遞,python還有更加強大的內置模塊argparse, 在實際開發中也更常用該模塊來處理命令行參數,後續在詳細介紹其用法。
·end·