日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python常用標(biāo)準(zhǔn)庫及第三方庫2-sys模塊

一、sys模塊簡介

前面介紹的os模塊主要面向操作系統(tǒng),而本篇的sys模塊則主要針對的是Python解釋器。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供廣安企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為廣安眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

sys模塊是Python自帶的模塊,它是與Python解釋器交互的一個(gè)接口。sys 模塊提供了許多函數(shù)和變量來處理 Python 運(yùn)行時(shí)環(huán)境的不同部分。

二、sys模塊常用方法

通過dir()方法可以查看sys模塊中帶有哪些方法:

import sys

print(dir(sys))

1.sys.argv-獲取命令行參數(shù)

sys.argv作用是實(shí)現(xiàn)從程序外部向程序傳遞參數(shù),它能夠獲取命令行參數(shù)列表。argv列表包含了所有傳遞給腳本的參數(shù):

  • sys.argv[0]:表示程序自身
  • sys.argv[1]:表示程序的第一個(gè)參數(shù)
  • sys.argv[2]:表示程序的第二個(gè)參數(shù)
import sys

for index, arg in enumerate(sys.argv):
print(index, arg)

在Python命令行執(zhí)行此腳本文件(未帶任何參數(shù)時(shí)),獲取到的第一個(gè)元素是腳本本身。打印結(jié)果為:

在Python命令行執(zhí)行此腳本文件(帶參數(shù)時(shí)),獲取到的第一個(gè)元素是腳本本身,其余的是傳遞來的參數(shù)。打印結(jié)果為:

2.sys.exit(n)-退出程序

sys.exit() 基本原理

sys.exit(n):

  • 當(dāng)n為0時(shí):正常退出
  • 當(dāng)n不等于0時(shí),非正常退出,會(huì)引發(fā)SystemExit的異常

一般情況下,程序執(zhí)行到末尾、解釋器就會(huì)自動(dòng)退出。此時(shí)代碼里并沒有調(diào)用sys.exit(0),但實(shí)際Python解釋器在運(yùn)行時(shí)調(diào)用sys.exit(0),運(yùn)行后PyCharm編輯器會(huì)自動(dòng)提示“Process finished with exit code 0”,如下:

而當(dāng)代碼里調(diào)用了sys.exit(888),即傳入一個(gè)非0的整數(shù),此時(shí)運(yùn)行后PyCharm編輯器會(huì)提示“Process finished with exit code 888”,如下:

而當(dāng)在代碼里調(diào)用了sys.exit(n)后,表示程序會(huì)退出,不管n是否等于0 ,即不管是正常退出還是異常退出,其后的語句都不會(huì)執(zhí)行,也就是不會(huì)執(zhí)行"print("Python sys.exit() 用法示例")"這句。從下面的圖中也能看出,sys.exit(888)后的語句在PyCharm編輯器中已經(jīng)泛黃提示(正常語法規(guī)范的話是不會(huì)泛黃提示的),并且運(yùn)行結(jié)果也確實(shí)沒有執(zhí)行sys.exit(888)后的語句:

sys.exit() 適用場景-控制程序中途退出

一般情況下,執(zhí)行到主程序末尾,解釋器就會(huì)自動(dòng)退出。上面的例子已經(jīng)告訴我們,如果想要中途退出,先調(diào)用sys.exit(),再調(diào)用其他語句是行不通的,編輯器會(huì)警告提示。

如果想要自由地控制程序是否在中途退出,可以使用"sys.exit(n)+捕獲異常"的方式。其中,n可以是一個(gè)整數(shù)參數(shù),也可以是字符串參數(shù),當(dāng)n為非0的值時(shí),就會(huì)拋出SystemExit異常,可以在主程序中對其進(jìn)行捕獲:

# sys.exit()用法示例
def exit_function(value):
print("sys.exit()捕獲到的value是%s" % value)
sys.exit(0)


print("start sys")

try:
sys.exit(888)
except SystemExit as value:
exit_function(value=value)

print("end sys")

① 程序中途退出示例

執(zhí)行結(jié)果如下:

執(zhí)行過程分析:

  1. 程序先執(zhí)行print("start sys")
  2. 緊接著執(zhí)行try語句,調(diào)用sys.exit(888)
  3. 隨后捕獲系統(tǒng)異常,捕獲到的SystemExit異常的value值為888
  4. 最后調(diào)用exit_function函數(shù),將value值888傳遞給exit_function函數(shù)
  5. 在exit_function函數(shù)中,執(zhí)行語句、打印捕獲到的value值,最后再調(diào)用sys.exit(0),退出程序

② 程序中途不退出示例

上個(gè)示例的執(zhí)行結(jié)果可以看到在exit_function函數(shù)中調(diào)用sys.exit(0),此時(shí)程序就會(huì)退出,不會(huì)再執(zhí)行print("end sys"),而當(dāng)在exit_function函數(shù)中注釋掉sys.exit(0),則會(huì)繼續(xù)執(zhí)行最后的代碼print("end sys"),即:程序中途不退出,如下所示:

3.sys.platform-獲取當(dāng)前Python運(yùn)行平臺

基本用法

print(sys.platform)

Windows下運(yùn)行:

Linux下運(yùn)行:

除了sys.platform外,通過platform.system()也可以獲取到當(dāng)前系統(tǒng)平臺:

Windows下運(yùn)行:

Linux下運(yùn)行:

適用場景

我們都知道Python是跨平臺語言,只要操作系統(tǒng)安裝了Python環(huán)境,那么同一份Python代碼就可以既運(yùn)行在Linux上,也可以運(yùn)行在Windows上,亦或是Mac上。

而使用sys.platform或platform.system()獲取到當(dāng)前系統(tǒng)平臺名稱后,我們就可以針對性地作出不同操作,例如:

linux_content = "111111"
windows_content = "222222"

# 平臺為Linux,執(zhí)行邏輯1、發(fā)送文本1到指定郵件
if platform.system() == "Linux":
send_email(linux_content)
# 平臺為Windows,執(zhí)行邏輯2、發(fā)送文本2到指定郵件
elif platform.system() == "Windows":
send_email(windows_content)

4.sys.path-返回Python相關(guān)路徑

基本用法

sys.path是Python的搜索模塊的路徑集,供Python從中查找模塊,返回一個(gè)list。

print(sys.path)

適用場景

如果是在IDE中執(zhí)行Python程序,編譯器會(huì)自動(dòng)把當(dāng)前項(xiàng)目的根目錄加入到包查找路徑中,可以理解為添加到環(huán)境變量下,所以直接執(zhí)行是沒有問題的。但是在cmd或是Terminal控制臺中直接使用Python相關(guān)命令來執(zhí)行程序,則不會(huì)自動(dòng)將當(dāng)前項(xiàng)目加入到PYTHONPATH環(huán)境變量下,如果涉及到import其他文件夾下的變量就會(huì)報(bào)類似"ModuleNotFoundError: No module named 'xxxx'"這樣的錯(cuò)誤。

解決方法:通過sys.path.append()方法將當(dāng)前項(xiàng)目的根目錄添加到系統(tǒng)環(huán)境變量中:

import sys

root_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(root_path)

5.sys.stdin與sys.stdout

  • Stdin:標(biāo)準(zhǔn)輸入
  • Stdout:標(biāo)準(zhǔn)輸出
  • Stderr:錯(cuò)誤流

sys.stdin 與 input()

在Python中, input() 等價(jià)于 sys.stdin.readline()

① 先來看看使用input()的實(shí)現(xiàn)效果

# sys.stdin 與 input
number = input("please input a number:")
print("your input number is %s" % (number))

執(zhí)行效果如下:

② 再來看看使用sys.stdin.readline()的實(shí)現(xiàn)效果

print("please input a number:",)  # 逗號表示不換行
nn = sys.stdin.readline()
print("your input number is %s" % (nn))

執(zhí)行效果如下:

sys.stdout 與 print()

在Python中, print() 等價(jià)于 sys.stdout.readline()

① 先來看看使用print()的實(shí)現(xiàn)效果

# sys.stdout 與 print
print("hello world")

執(zhí)行效果如下:

② 再來看看使用sys.stdin.write()的實(shí)現(xiàn)效果

sys.stdout.write("hello world")

執(zhí)行效果如下:

所以綜上所述,input()+print() 結(jié)合的代碼語句即可使用sys.stdin.readline()+sys.stdin.write()代替,如下:

sys.stdout.write("please input a number: \n")
number = sys.stdin.readline()
sys.stdout.write("your input number is %s" % number)

執(zhí)行效果如下:

6.sys模塊其他用法

  • sys.version:獲取Python解釋器版本
  • sys.exc_info():返回異常信息三元元組
  • sys.getdefaultencoding():獲取系統(tǒng)當(dāng)前編碼,默認(rèn)為utf-8
  • sys.setdefaultencoding():設(shè)置系統(tǒng)的默認(rèn)編碼
  • sys.getfilesystemencoding():獲取文件系統(tǒng)使用編碼方式,默認(rèn)是utf-8
  • sys.modules:以字典的形式返回所有當(dāng)前Python環(huán)境中已經(jīng)導(dǎo)入的模塊
  • sys.copyright:當(dāng)前Python的版權(quán)信息
  • sys.getrefcount(object):返回對象的引用數(shù)量
  • sys.getrecursionlimit():返回Python最大遞歸深度,默認(rèn)1000
  • sys.getsizeof(object[, default]):返回對象的大小
  • sys.getwindowsversion():返回當(dāng)前windwos系統(tǒng)的版本信息

小結(jié)

sys模塊是Python自帶的模塊,主要用于與Python解釋器交互。它自帶了很多方法或?qū)傩?,其中?/p>

1.sys.argv作用是實(shí)現(xiàn)從程序外部向程序傳遞參數(shù),它能夠獲取命令行參數(shù)列表。argv列表包含了所有傳遞給腳本的參數(shù):

  • sys.argv[0]:表示程序自身
  • sys.argv[1]:表示程序的第一個(gè)參數(shù)
  • sys.argv[2]:表示程序的第二個(gè)參數(shù)

2.sys.exit(n)作用是退出程序:

  • 當(dāng)n為0時(shí):正常退出
  • 當(dāng)n不等于0時(shí),非正常退出,會(huì)引發(fā)SystemExit的異常

sys.exit(n)經(jīng)常與捕獲SystemExit異常一起使用,用來控制程序是否自由地中途退出;

3.sys.platform作用是獲取當(dāng)前Python運(yùn)行平臺,類似于platform.system(),常用來針對性地對不同操作系統(tǒng)作出不同的操作邏輯;

4.sys.path是Python的搜索模塊的路徑集,通過sys.path.append()方法將當(dāng)前項(xiàng)目的根目錄添加到系統(tǒng)環(huán)境變量中,可以用來解決找不到模塊的報(bào)錯(cuò)情況;

5.在Python中, input() 等價(jià)于 sys.stdin.readline(),print() 等價(jià)于 sys.stdout.readline()。


本文名稱:Python常用標(biāo)準(zhǔn)庫及第三方庫2-sys模塊
本文路徑:http://www.5511xx.com/article/cocejpo.html