概述
????????在上一節(jié),我們介紹了Python的os模塊,包括:os模塊中一些常用的屬性和函數(shù)。在這一節(jié),我們將介紹Python的sys模塊。sys模塊提供了訪問解釋器使用或維護的變量,以及與解釋器進行交互的函數(shù)。 通俗來講,sys模塊負責程序與Python解釋器的交互,提供了一系列的函數(shù)和變量,用于操控Python運行時的環(huán)境。比如:它提供了一些與Python解釋器交互的方法,包括:獲取命令行參數(shù)、處理Python解釋器的退出等。
????????下面,我們將逐一介紹sys模塊中一些常用的屬性和函數(shù)。
sys.version屬性
????????sys.version是一個包含Python解釋器版本號和編譯版本號等額外信息的字符串,它會在Python交互式解釋器啟動時顯示。
import sys
# 輸出:3.11.4 (tags/v3.11.4:d2340ef, Jun 7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)]
print(sys.version)
sys.version_info屬性
????????sys.version_info是一個元組,包含了五個部分的信息,分別為:主版本號、次版本號、微版本號、發(fā)行級別('alpha'、'beta'、'candidate' 或 'final')和序列號。比如:對于Python 3.8.5,sys.version_info將返回(3, 8, 5, 'final', 0)。返回的元組可以用于比較Python版本。
import sys
# 輸出:sys.version_info(major=3, minor=11, micro=4, releaselevel='final', serial=0)
print(sys.version_info)
if sys.version_info < (3, 0):
print('can only run in Python 3.x')
sys.exit()
else:
print('Python version passed')
sys.platform屬性
????????sys.platform是一個字符串,用于表示Python解釋器正在其上運行的平臺。如果你的Python解釋器運行在Windows上,sys.platform的值將是'win32';如果你的Python解釋器運行在Linux或Mac OS上,sys.platform的值將是'darwin'或'linux2'。
????????該屬性可以用來編寫依賴于特定操作系統(tǒng)的代碼,比如:如果我們需要使用一些只在Windows上可用的庫或者功能,可以先檢查sys.platform的值,然后根據(jù)需要選擇使用哪個庫或者功能,或者給用戶一個提示,讓他們知道程序無法在當前的操作系統(tǒng)上運行。
import sys
# 輸出:win32
print(sys.platform)
sys.path屬性
????????sys.path是一個Python列表,包含了許多目錄。當我們嘗試導(dǎo)入一個模塊時,Python會在這個列表中尋找那個模塊。該列表的初始值來自于以下三個方面:輸入腳本的目錄、PYTHONPATH環(huán)境變量、安裝的默認路徑??梢孕薷倪@個列表,以便Python能在我們指定的目錄中查找模塊。比如:如果模塊在一個非標準的目錄中,我們可以將那個目錄添加到sys.path中,這樣Python就能找到它了。
????????注意:修改sys.path只會影響當前Python進程的行為,不會影響其他進程或Python解釋器。
import sys
# 輸出:['F:\\',
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip',
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\DLLs',
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\Lib',
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311',
# 'C:\\Users\\H\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages']
print(sys.path)
sys.argv屬性
????????sys.argv是一個Python列表,包含了命令行參數(shù)。該列表的第一個元素是腳本名,也就是被調(diào)用的程序的名字,其余的元素是從命令行傳遞給程序的參數(shù)。比如:如果運行python test.py arg1 arg2,那么sys.argv將會是['test.py', 'arg1', 'arg2']。我們可以使用sys.argv來獲取命令行參數(shù),并根據(jù)需要對其進行處理。
import sys
# 輸出:['F:\\test.py']
print(sys.argv)
sys.stdout屬性
????????sys.stdout是一個Python文件對象,代表了系統(tǒng)的標準輸出流。可以像操作文件一樣操作sys.stdout,比如:寫入文本。寫入sys.stdout的內(nèi)容將會被輸出到控制臺,也就是終端或者命令行窗口。注意:雖然我們可以像操作文件一樣操作sys.stdout,但是并不建議這樣做,因為這可能會導(dǎo)致一些難以預(yù)料的問題。如果需要輸出文本,最好使用print()函數(shù),而不是直接操作sys.stdout。
import sys
# 輸出:Hello, CSDN
sys.stdout.write('Hello, CSDN\n')
sys.maxsize屬性
????????sys.maxsize是一個Python整數(shù),用于表示Python可以處理的最大整數(shù)。這個值是根據(jù)Python的位數(shù)和配置來確定的:在32位Python中,sys.maxsize的值是2147483647(也就是2的31次方減1);在64位Python中,sys.maxsize的值是9223372036854775807(也就是2的63次方減1)。sys.maxsize可以用于檢查一個整數(shù)是否會在加法或乘法等操作后溢出,如果你嘗試添加一個大于sys.maxsize的數(shù)到一個整數(shù),Python會拋出一個OverflowError錯誤。
import sys
# 輸出:9223372036854775807
print(sys.maxsize)
sys.exit()函數(shù)
????????sys.exit()函數(shù)用于引發(fā)一個系統(tǒng)退出,它接受一個可選參數(shù),這個參數(shù)可以是一個整數(shù),或者一個異常對象。如果參數(shù)是一個整數(shù),那么這個整數(shù)會被用作Python解釋器的退出狀態(tài);如果參數(shù)是一個異常對象,那么這個異常會被拋出;如果沒有給這個函數(shù)提供任何參數(shù),或者參數(shù)是None,那么Python解釋器會退出,并且返回狀態(tài)碼0。該函數(shù)通常在想要立即結(jié)束程序,或者在程序中處理致命錯誤時使用。
import sys
a = 10
if a > 6:
sys.exit(0)
else:
print(a)
sys.getfilesystemencoding()函數(shù)
????????sys.getfilesystemencoding()函數(shù)用于返回文件系統(tǒng)的默認編碼,該函數(shù)取代了sys.getdefaultencoding()函數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-725081.html
import sys
# 輸出:utf-8
print(sys.getfilesystemencoding())
sys.getrecursionlimit()函數(shù)
????????sys.getrecursionlimit()函數(shù)用于返回Python解釋器當前的遞歸深度限制。這個限制是一種防止無限遞歸導(dǎo)致程序崩潰的保護機制。在Python中,每次函數(shù)調(diào)用都會在調(diào)用棧中增加一個新的棧幀,每個棧幀都會占用一些內(nèi)存。如果函數(shù)調(diào)用層次過深,就會導(dǎo)致調(diào)用棧溢出,程序崩潰。注意:雖然可以使用sys.setrecursionlimit(limit)來提高這個限制,但是一般不建議這么做,因為這可能會導(dǎo)致大量的內(nèi)存被占用,甚至導(dǎo)致程序崩潰。文章來源地址http://www.zghlxwxcb.cn/news/detail-725081.html
import sys
# 輸出:1000
print(sys.getrecursionlimit())
到了這里,關(guān)于18 Python的sys模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!