Python的常用基礎(chǔ)模塊之sys模塊詳解
一、sys模塊介紹
1.1 什么是 Python 解釋器
當(dāng)編寫(xiě) Python 代碼時(shí),通常都會(huì)得到一個(gè)包含 Python 代碼的以 .py
為擴(kuò)展名的文件。
要運(yùn)行編寫(xiě)的代碼,就需要使用 Python 解釋器去執(zhí)行 .py
文件。
因此,Python 解釋器就是用來(lái)執(zhí)行 Python 代碼的一種工具。常見(jiàn)的 Python 解釋器有以下幾種:
- CPython:Python 的官方解釋器。
當(dāng)我們從 Python 官方網(wǎng)站下載并安裝好 Python 后,就直接獲得了 CPython 解釋器,該解釋器是使用 C 語(yǔ)言開(kāi)發(fā)的,所以叫 CPython。
我們?cè)?CMD 命令窗口中運(yùn)行 python 命令就是啟動(dòng) CPython 解釋器,如下圖所示:
- IPython :IPython 是基于 CPython 之上的一個(gè)交互式解釋器,它執(zhí)行 Python 代碼的功能和 CPython 是完全一樣的,唯一的區(qū)別是:CPython 用
>>>
作為提示符,而 IPython 用In[ 序號(hào)]:
作為提示符。
- PyPy :PyPy 解釋器的目標(biāo)是執(zhí)行速度,它采用 JIT 技術(shù),對(duì) Python 代碼進(jìn)行動(dòng)態(tài)編譯,所以可以顯著提高 Python 代碼的執(zhí)行速度。
- Jython:運(yùn)行在 Java 平臺(tái)上的 Python 解釋器,可以直接把 Python 代碼編譯成 Java 字節(jié)碼執(zhí)行。
- IronPython :運(yùn)行在微軟
.NET
平臺(tái)上的 Python 解釋器,可以直接把 Python 代碼編譯成.NET
的中間代碼。
1.2 sys 模塊的作用
sys 模塊提供訪問(wèn) Python 解釋器使用或維護(hù)的屬性,以及與 Python 解釋器進(jìn)行交互的方法。
簡(jiǎn)單來(lái)講,sys 模塊負(fù)責(zé)程序與 Python 解釋器的交互,并提供了一系列的屬性和方法,用于操控 Python 運(yùn)行時(shí)的環(huán)境。
在 Python 程序中使用 sys 模塊,首先需要使用 import 導(dǎo)入,代碼如下:
import sys
導(dǎo)入 sys 模塊后,就可以使用該模塊提供的屬性和方法了。
二、常用方法及屬性介紹
2.1 modules屬性
將模塊名稱(chēng)映射到已加載模塊的字典
modules 屬性返回一個(gè)將模塊名稱(chēng)映射到已加載模塊的字典。語(yǔ)法格式如下:
sys.modules # 返回值:返回一個(gè)字典
使用 modules 屬性獲取本機(jī)所有已安裝的模塊及所在模塊文件,代碼如下:
import sys for key, value in sys.modules.items(): # 遍歷所有模塊字典 print(f'{key}:{value}') # 打印模塊及所在模塊文件
程序運(yùn)行結(jié)果如下:
使用 modules 屬性獲取 os 模塊的來(lái)源,代碼如下:
import sys # <module 'os' from 'd:\\developsoftware\\python37\\lib\\os.py'> print(sys.modules["os"])
使用 modules 對(duì)象的 keys() 方法可以獲取到所有導(dǎo)入的模塊列表,代碼如下:
import sys print('模塊列表:') for i in sys.modules.keys(): # 遍歷模塊列表 print('' + i) # 打印模塊
2.2 getdefaultencoding()方法
獲取默認(rèn)字符串編碼名稱(chēng)
getdefaultencoding() 方法用于返回當(dāng)前默認(rèn)字符串編碼的名稱(chēng),語(yǔ)法格式如下:
sys.getdefaultencoding()
參數(shù)說(shuō)明:返回值:返回類(lèi)似 ascii、utf-8 或者 gbk 等的字符串,具體的值根據(jù) site.py
模塊中設(shè)置的默認(rèn)編碼而定。
使用 getdefaultencoding() 方法獲取本地 Python 解釋器使用的默認(rèn)字符串編碼,代碼如下:
import sys print(sys.getdefaultencoding()) # utf-8
2.3 exit()方法
退出Python
exit() 方法用于退出 Python 解釋器,即退出正在運(yùn)行的程序。語(yǔ)法格式如下:
sys.exit([arg])
參數(shù)說(shuō)明:
- arg :可選參數(shù),該參數(shù)是一個(gè)整數(shù),表示退出狀態(tài)。0 表示正常退出,非 0 表示異常終止。如果指定為一個(gè)非整數(shù)值,則將它打印到 sys.stderr,并使用退出碼 1。
- 返回值:返回退出碼,0 表示正常退出,1 表示異常退出。
說(shuō)明:arg 參數(shù)的取值范圍通常在 0~127 范圍內(nèi),否則會(huì)產(chǎn)生不確定的結(jié)果。
正常退出程序的代碼如下:
import sys print(11) sys.exit(0)
程序運(yùn)行結(jié)果如下:
通過(guò)為 exit() 方法指定非 0 參數(shù)異常終止程序,代碼如下:
import sys print(11) sys.exit(1) print(22)
程序運(yùn)行結(jié)果如下:
2.4 path屬性
指定模塊搜索路徑
path 屬性用于獲取一個(gè)字符串列表,它指定模塊的搜索路徑。在程序啟動(dòng)時(shí),此列表的第一項(xiàng) path[0] 通常是 Python 腳本(.py 文件) 所在的目錄。如果腳本目錄不可用(例如,交互式調(diào)用解釋器或者從標(biāo)準(zhǔn)輸入讀取腳本),則 path[0] 為空字符串,它指示 Python 首先搜索當(dāng)前目錄中的模塊。語(yǔ)法格式如下:
sys.path
使用 path 屬性獲取 Python 解釋器的模塊搜索路徑,并遍歷輸出,代碼如下:
import sys for i in sys.path: # 遍歷所有路徑列表 print(i) # 打印遍歷到的路徑
程序運(yùn)行結(jié)果如下:
E:\Code\lesson\python-package
E:\Code\lesson
D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_display
d:\developsoftware\python37\python37.zip
d:\developsoftware\python37\DLLs
d:\developsoftware\python37\lib
d:\developsoftware\python37
E:\Code\scrapy_study\venv
E:\Code\scrapy_study\venv\lib\site-packages
D:\DevelopSoftware\PyCharm2021.3.3\PyCharm 2021.3.3\plugins\python\helpers\pycharm_matplotlib_backend
使用 path 屬性的 append() 方法向模塊搜索路徑中添加 ./module
,然后遍歷輸出最新的模塊搜索路徑,代碼如下:
import sys sys.path.append("./module") # 添加模塊搜索路徑
2.5 argv屬性
程序命令行參數(shù)列表
argv 屬性表示傳遞給 Python 腳本的命令行參數(shù)列表。argv[0] 是腳本名稱(chēng)(取決于操作系統(tǒng)是否為完整路徑名)。語(yǔ)法格式如下:
sys.argv
通過(guò)使用 argv 屬性獲取 Python 解釋器的命令行參數(shù)列表,并使用 argv[0] 獲取 Python 腳本的完整路徑,代碼如下:
通過(guò)使用 os 模塊的 fsencode() 方法獲取命令行參數(shù)的原始字節(jié),代碼如下:
import sys import os for arg in sys.argv: print(os.fsencode(arg))
程序運(yùn)行結(jié)果如下:
b'E:/Code/lesson/python-package/demo5_sys.py'
注意:在 Unix 系統(tǒng)中,命令行參數(shù)是從 OS 傳遞的字節(jié)。Python 使用文件系統(tǒng)編碼和 surrogateescape 錯(cuò)誤處理程序?qū)λ鼈冞M(jìn)行解碼。
2.6 platform屬性
獲取系統(tǒng)標(biāo)識(shí)符
platform 屬性返回一個(gè)表示系統(tǒng)標(biāo)識(shí)符的字符串。語(yǔ)法格式如下:
sys.platform
操作系統(tǒng)及對(duì)應(yīng)的 platform 值如下表所示:
用 platform 屬性判斷當(dāng)前系統(tǒng)平臺(tái)為哪個(gè)平臺(tái),代碼如下:
import sys if sys.platform == 'win32': print('當(dāng)前是Windows平臺(tái)') elif sys.platform == 'linux': print('當(dāng)前是Linux平臺(tái)') elif sys.platform == 'darwin': print('當(dāng)前是Mac平臺(tái)')
筆者使用的是 Windows 平臺(tái),故程序運(yùn)行結(jié)果如下:
到此這篇關(guān)于Python的常用基礎(chǔ)模塊之sys模塊詳解的文章就介紹到這了,更多相關(guān)Python的sys模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python安裝Gradio和常見(jiàn)安裝問(wèn)題解決辦法
Gradio是一款便捷的Python庫(kù),專(zhuān)門(mén)用于創(chuàng)建機(jī)器學(xué)習(xí)模型的Web應(yīng)用,安裝通常簡(jiǎn)單,但偶爾會(huì)遇到依賴(lài)問(wèn)題或環(huán)境配置錯(cuò)誤,這篇文章主要介紹了Python安裝Gradio和常見(jiàn)安裝問(wèn)題解決辦法,需要的朋友可以參考下2024-10-10anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟
在Anaconda中,可以使用conda命令來(lái)創(chuàng)建和管理虛擬環(huán)境,本文主要介紹了anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12windows中python實(shí)現(xiàn)自動(dòng)化部署
本文主要介紹了windows中python實(shí)現(xiàn)自動(dòng)化部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式
這篇文章主要介紹了python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07實(shí)例講解Python腳本成為Windows中運(yùn)行的exe文件
在本篇文章里小編給大家分享了關(guān)于Python腳本成為Windows中運(yùn)行的exe文件的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-01-01python實(shí)現(xiàn)簡(jiǎn)單socket程序在兩臺(tái)電腦之間傳輸消息的方法
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單socket程序在兩臺(tái)電腦之間傳輸消息的方法,涉及Python操作socket的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03python使用ctypes庫(kù)調(diào)用DLL動(dòng)態(tài)鏈接庫(kù)
這篇文章主要介紹了python如何使用ctypes庫(kù)調(diào)用DLL動(dòng)態(tài)鏈接庫(kù),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-10-10Python內(nèi)建類(lèi)型float源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類(lèi)型float源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05