Python學(xué)習(xí)之sys模塊使用教程詳解
sys模塊 與 os包一樣,也是對(duì)系統(tǒng)資源進(jìn)行調(diào)用。功能同樣也是非常豐富,接下來我們會(huì)對(duì) sys模塊的一些簡(jiǎn)單且常用的函數(shù)進(jìn)行介紹,主要針對(duì)一些非功能性的函數(shù)與屬性來認(rèn)識(shí)一些不太常見的 Python 背后的事件。
sys 中的常用方法
函數(shù)名 | 參數(shù) | 介紹 | 舉例 | 返回值 |
---|---|---|---|---|
modules(屬性) | 無 | 將Python啟動(dòng)時(shí)加載的模塊集合起來并返回一個(gè)列表 | 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,則后面的代碼不會(huì)執(zhí)行) | sys.exit(0) | 無 |
getdefaultencoding | 無 | 獲取當(dāng)前系統(tǒng)級(jí)別的編碼格式(比如 utf-8) | sys.getdefaultencoding() | 字符串 |
platform(函數(shù)) | 無 | 獲取當(dāng)前系統(tǒng)平臺(tái)(如windows、Mac、linux) | sys.platform() | 字符串 |
version(屬性) | 無 | 獲取當(dāng)前 Python 的版本 | sys.version | 字符串 |
argv(屬性) | *args | 獲取程序外部的參數(shù),返回值是一個(gè)列表,實(shí)際開發(fā)中很常用的一個(gè)功能 | sys.argv | 列表 |
示例如下:
import sys modules = sys.modules # 將 sys 模塊的 modules 屬性 賦值給 modules 并打印輸出 Python啟動(dòng)時(shí)加載的模塊集合 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)平臺(tái)(如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ù),返回值是一個(gè)列表。
說實(shí)話我一直在 python 解釋器、idea 運(yùn)行,試圖從結(jié)果發(fā)現(xiàn)它的用途,然而結(jié)果一直都是沒結(jié)果,也在網(wǎng)上查了許多資料,大部分都是轉(zhuǎn)裁和復(fù)制的。給的都是簡(jiǎn)明python教程上那個(gè)一長(zhǎng)串代碼的例子,說看了就明白了,可我看得暈頭轉(zhuǎn)向的還是沒真正明白,只知道 sys.argv[0] 表示當(dāng)前腳本本身文件路徑的該腳本文件。后來經(jīng)過大量努力,多方求教才真正明悟了,謹(jǐn)以記錄和分享,希望能從另一個(gè)角度給同在求索過程中的同學(xué)一點(diǎn)啟發(fā)。
sys.argv 其實(shí)就是一個(gè)從程序外部獲取參數(shù) 的橋梁,這里所說的 外部 很關(guān)鍵,所以那些試圖從代碼來說明它作用的解釋一直沒看明白。因?yàn)槲覀冃枰仍诮K端執(zhí)行腳本, 并從外部傳入?yún)?shù)(可以是多個(gè)),所以獲得的是一個(gè)列表(list),也就是說sys.argv其實(shí)可以看作是一個(gè)列表,所以才能用[ ]提取其中的元素。其第一個(gè)元素是程序本身,隨后才依次是外部傳入的參數(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' 其實(shí)就是運(yùn)行自身的腳本文件 # >>> 我們從 '外部' 運(yùn)行該腳本文件的時(shí)候,需要傳入?yún)?shù)(可以是多個(gè))
接下來我們將上面的代碼改為如下:
import sys print(sys.argv[0], sys.argv[1]) # >>> 接下來我們進(jìn)入 Terminal 終端 利用 python 執(zhí)行 該腳本文件,并傳入 測(cè)試參數(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('該命令未識(shí)別')
然后在 Terminal 終端 執(zhí)行該腳本,如下圖:
到此這篇關(guān)于Python學(xué)習(xí)之sys模塊使用教程詳解的文章就介紹到這了,更多相關(guān)Python sys模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編程實(shí)現(xiàn)生成特定范圍內(nèi)不重復(fù)多個(gè)隨機(jī)數(shù)的2種方法
這篇文章主要介紹了Python編程實(shí)現(xiàn)生成特定范圍內(nèi)不重復(fù)多個(gè)隨機(jī)數(shù)的2種方法,涉及Python基于random生成隨機(jī)數(shù)的常見操作技巧,需要的朋友可以參考下2017-04-04python?opencv圖像的高通濾波和低通濾波的示例代碼
這篇文章主要介紹了python?opencv圖像的高通濾波和低通濾波,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06使用sklearn進(jìn)行對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化、歸一化以及將數(shù)據(jù)還原的方法
今天小編就為大家分享一篇使用sklearn進(jìn)行對(duì)數(shù)據(jù)標(biāo)準(zhǔn)化、歸一化以及將數(shù)據(jù)還原的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07Python數(shù)據(jù)結(jié)構(gòu)與算法之圖的最短路徑(Dijkstra算法)完整實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之圖的最短路徑(Dijkstra算法),結(jié)合完整實(shí)例形式分析了Python圖的最短路徑算法相關(guān)原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12python微信跳一跳系列之自動(dòng)計(jì)算跳一跳距離
這篇文章主要為大家詳細(xì)介紹了python微信跳一跳系列之自動(dòng)計(jì)算跳一跳距離,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Python Matplotlib繪制動(dòng)畫的代碼詳解
使用matplotlib可以很容易地創(chuàng)建動(dòng)畫框架。在本文中我們就將利用Matplotlib制作幾個(gè)簡(jiǎn)單的動(dòng)畫,文中的示例代碼講講詳細(xì),感興趣的可以了解下2022-05-05Python?datacompy?找出兩個(gè)DataFrames不同的地方
本文主要介紹了Python?datacompy?找出兩個(gè)DataFrames不同的地方,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>2022-05-05Python實(shí)現(xiàn)去除Excel重復(fù)數(shù)據(jù)并統(tǒng)計(jì)重復(fù)次數(shù)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)文本數(shù)據(jù)去重,創(chuàng)建包含唯一值的新列,并統(tǒng)計(jì)文本數(shù)據(jù)出現(xiàn)的次數(shù),需要的可以參考下2023-08-08