Python學(xué)習(xí)之sys模塊使用教程詳解
sys模塊 與 os包一樣,也是對系統(tǒng)資源進(jìn)行調(diào)用。功能同樣也是非常豐富,接下來我們會對 sys模塊的一些簡單且常用的函數(shù)進(jìn)行介紹,主要針對一些非功能性的函數(shù)與屬性來認(rèn)識一些不太常見的 Python 背后的事件。
sys 中的常用方法
| 函數(shù)名 | 參數(shù) | 介紹 | 舉例 | 返回值 |
|---|---|---|---|---|
| modules(屬性) | 無 | 將Python啟動時加載的模塊集合起來并返回一個列表 | sys.modules | 列表 |
| path(屬性) | 無 | 返回當(dāng)前Py的環(huán)境路徑(當(dāng)前py環(huán)境可以導(dǎo)入內(nèi)置、第三方包與函數(shù)的所在路徑) | sys.path | 列表 |
| exit(函數(shù)) | arg | 退出程序(執(zhí)行十行代碼,若在第二行插入sys.exit,則后面的代碼不會執(zhí)行) | sys.exit(0) | 無 |
| getdefaultencoding | 無 | 獲取當(dāng)前系統(tǒng)級別的編碼格式(比如 utf-8) | sys.getdefaultencoding() | 字符串 |
| platform(函數(shù)) | 無 | 獲取當(dāng)前系統(tǒng)平臺(如windows、Mac、linux) | sys.platform() | 字符串 |
| version(屬性) | 無 | 獲取當(dāng)前 Python 的版本 | sys.version | 字符串 |
| argv(屬性) | *args | 獲取程序外部的參數(shù),返回值是一個列表,實際開發(fā)中很常用的一個功能 | sys.argv | 列表 |
示例如下:
import sys modules = sys.modules # 將 sys 模塊的 modules 屬性 賦值給 modules 并打印輸出 Python啟動時加載的模塊集合 print(modules) # sys.exit(0) # 取消注釋該行代碼,下方所有的代碼將不再執(zhí)行 path = sys.path print(path) # 將 sys 模塊的 path 屬性 賦值給 path 并打印輸出 python 環(huán)境可以導(dǎo)入內(nèi)置、第三方包與函數(shù)的所在路徑 code = sys.getdefaultencoding() # 將 sys 模塊 的 getdefaultencoding()函數(shù) 賦值給 code 并打印輸出當(dāng)前系統(tǒng)的編碼[utf-8] print(code) # >>> 執(zhí)行結(jié)果如下: # >>> utf-8 print(sys.platform) # 獲取當(dāng)前系統(tǒng)平臺(如windows、Mac、linux) # >>> 執(zhí)行結(jié)果如下: # >>> darwin print(sys.version) # 獲取當(dāng)前 Python 的版本 # >>> 執(zhí)行結(jié)果如下: # >>> 3.8.7 (v3.8.7:6503f05dd5, Dec 21 2020, 12:45:15) # >>> [Clang 6.0 (clang-600.0.57)]
接下來的 sys.argv 可要好好說一說了。上文我們提到 argv 是獲取程序外部的參數(shù),返回值是一個列表。
說實話我一直在 python 解釋器、idea 運行,試圖從結(jié)果發(fā)現(xiàn)它的用途,然而結(jié)果一直都是沒結(jié)果,也在網(wǎng)上查了許多資料,大部分都是轉(zhuǎn)裁和復(fù)制的。給的都是簡明python教程上那個一長串代碼的例子,說看了就明白了,可我看得暈頭轉(zhuǎn)向的還是沒真正明白,只知道 sys.argv[0] 表示當(dāng)前腳本本身文件路徑的該腳本文件。后來經(jīng)過大量努力,多方求教才真正明悟了,謹(jǐn)以記錄和分享,希望能從另一個角度給同在求索過程中的同學(xué)一點啟發(fā)。
sys.argv 其實就是一個從程序外部獲取參數(shù) 的橋梁,這里所說的 外部 很關(guān)鍵,所以那些試圖從代碼來說明它作用的解釋一直沒看明白。因為我們需要先在終端執(zhí)行腳本, 并從外部傳入?yún)?shù)(可以是多個),所以獲得的是一個列表(list),也就是說sys.argv其實可以看作是一個列表,所以才能用[ ]提取其中的元素。其第一個元素是程序本身,隨后才依次是外部傳入的參數(shù)。
我們先來看一下 sys.argv 返回的是什么?
import sys print(sys.argv) # >>> 執(zhí)行結(jié)果如下: # >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py'] # >>> 從執(zhí)行結(jié)果可以看出 其輸出的就是當(dāng)前路徑下的當(dāng)前腳本本身,也就可以理解為 'sys.argv' 其實就是運行自身的腳本文件 # >>> 我們從 '外部' 運行該腳本文件的時候,需要傳入?yún)?shù)(可以是多個)
接下來我們將上面的代碼改為如下:
import sys print(sys.argv[0], sys.argv[1]) # >>> 接下來我們進(jìn)入 Terminal 終端 利用 python 執(zhí)行 該腳本文件,并傳入 測試參數(shù),結(jié)果如下圖。

為了更好的 演示 sys.argv 屬性,我們將上文演示的 sys 常用的函數(shù)與屬性進(jìn)行一下修改。示例如下:
import sys
command = sys.argv[1]
if command == 'modules':
modules = sys.modules
print(modules)
elif command == 'path':
path = sys.path
print(path)
elif command == 'encoding':
code = sys.getdefaultencoding()
print(code)
elif command == 'platform':
print(sys.platform)
elif command == 'version':
print(sys.version)
else:
print('該命令未識別')
然后在 Terminal 終端 執(zhí)行該腳本,如下圖:

到此這篇關(guān)于Python學(xué)習(xí)之sys模塊使用教程詳解的文章就介紹到這了,更多相關(guān)Python sys模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python腳本監(jiān)控Tomcat服務(wù)器的方法
這篇文章主要介紹了利用python腳本監(jiān)控Tomcat服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
PyTorch解決ModuleNotFoundError: No module named
本文主要介紹了PyTorch解決ModuleNotFoundError: No module named ‘torch’,這個錯誤意味著我們的Python環(huán)境中沒有安裝PyTorch庫,無法正常使用其功能,下面就來具體介紹一下2024-03-03
Python中def()函數(shù)的實戰(zhàn)練習(xí)題
def是define的縮寫,用來自定義函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中def()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Python中強大的函數(shù)map?filter?reduce使用詳解
Python是一門功能豐富的編程語言,提供了許多內(nèi)置函數(shù),以簡化各種編程任務(wù),在Python中,map(),filter()和reduce()是一組非常有用的函數(shù),它們允許對可迭代對象進(jìn)行操作,從而實現(xiàn)數(shù)據(jù)轉(zhuǎn)換、篩選和累積等操作,本文將詳細(xì)介紹這三個函數(shù),包括它們的基本用法和示例代碼2023-11-11
漂亮的Django Markdown富文本app插件的實現(xiàn)
這篇文章主要介紹了漂亮的Django Markdown富文本app插件的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)
這篇文章主要介紹了Python pandas如何根據(jù)指定條件篩選數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

