成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python常用標準庫及第三方庫2-sys模塊

開發 前端
sys模塊是Python自帶的模塊,它是與Python解釋器交互的一個接口。sys 模塊提供了許多函數和變量來處理 Python 運行時環境的不同部分。

一、sys模塊簡介

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

sys模塊是Python自帶的模塊,它是與Python解釋器交互的一個接口。sys 模塊提供了許多函數和變量來處理 Python 運行時環境的不同部分。

二、sys模塊常用方法

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

import sys

print(dir(sys))

1.sys.argv-獲取命令行參數

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

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

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

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

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

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

sys.exit() 基本原理

sys.exit(n):

  • 當n為0時:正常退出
  • 當n不等于0時,非正常退出,會引發SystemExit的異常

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

而當代碼里調用了sys.exit(888),即傳入一個非0的整數,此時運行后PyCharm編輯器會提示“Process finished with exit code 888”,如下:

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

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

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

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

# 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")

① 程序中途退出示例

執行結果如下:

執行過程分析:

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

② 程序中途不退出示例

上個示例的執行結果可以看到在exit_function函數中調用sys.exit(0),此時程序就會退出,不會再執行print("end sys"),而當在exit_function函數中注釋掉sys.exit(0),則會繼續執行最后的代碼print("end sys"),即:程序中途不退出,如下所示:

3.sys.platform-獲取當前Python運行平臺

基本用法

print(sys.platform)

Windows下運行:

Linux下運行:

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

Windows下運行:

Linux下運行:

適用場景

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

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

linux_content = "111111"
windows_content = "222222"

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

4.sys.path-返回Python相關路徑

基本用法

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

print(sys.path)

適用場景

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

解決方法:通過sys.path.append()方法將當前項目的根目錄添加到系統環境變量中:

import sys

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

5.sys.stdin與sys.stdout

  • Stdin:標準輸入
  • Stdout:標準輸出
  • Stderr:錯誤流

sys.stdin 與 input()

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

① 先來看看使用input()的實現效果

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

執行效果如下:

② 再來看看使用sys.stdin.readline()的實現效果

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

執行效果如下:

sys.stdout 與 print()

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

① 先來看看使用print()的實現效果

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

執行效果如下:

② 再來看看使用sys.stdin.write()的實現效果

sys.stdout.write("hello world")

執行效果如下:

所以綜上所述,input()+print() 結合的代碼語句即可使用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)

執行效果如下:

6.sys模塊其他用法

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

小結

sys模塊是Python自帶的模塊,主要用于與Python解釋器交互。它自帶了很多方法或屬性,其中:

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

  • sys.argv[0]:表示程序自身
  • sys.argv[1]:表示程序的第一個參數
  • sys.argv[2]:表示程序的第二個參數

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

  • 當n為0時:正常退出
  • 當n不等于0時,非正常退出,會引發SystemExit的異常

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

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

4.sys.path是Python的搜索模塊的路徑集,通過sys.path.append()方法將當前項目的根目錄添加到系統環境變量中,可以用來解決找不到模塊的報錯情況;

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

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-03-03 10:26:49

Python內建庫模塊

2019-07-30 11:35:54

AndroidRetrofit

2010-03-03 15:10:49

第三方Python庫

2015-07-13 13:34:13

ios第三方庫xcode插件

2015-07-13 09:48:21

iOS

2014-07-22 10:56:45

Android Stu第三方類庫

2022-01-14 09:57:14

鴻蒙HarmonyOS應用

2025-06-16 08:05:00

Python編程

2022-06-06 07:50:55

PythonJSON

2022-05-21 23:56:16

Python庫搜索Python

2011-07-25 14:14:49

iPhone SQLITE Pldatabase

2015-11-05 16:44:37

第三方登陸android源碼

2021-10-11 06:38:52

Go開源庫語言

2013-08-14 09:50:32

iOS類庫

2017-09-26 11:29:29

安卓

2012-01-04 14:02:26

JsonCpp

2013-01-15 13:50:22

iOS開發開源庫

2020-10-29 09:56:23

Linux靜態庫動態庫

2021-01-27 10:04:46

鴻蒙HarmonyOS動畫

2022-04-25 09:00:46

npm包管理器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰国产在线 | 天天干免费视频 | 国产91久久久久 | 欧美一区二区小视频 | 成人高清在线 | 国产精品爱久久久久久久 | 久久精品亚洲成在人线av网址 | 男人的天堂久久 | 91在线观看免费视频 | 天堂一区 | 成人一区二区三区 | 在线观看亚洲欧美 | 中文一区二区 | 国产免费人成xvideos视频 | 一区二区三区中文字幕 | 91久久久久久久久 | 毛片在线免费播放 | 成人性视频免费网站 | 在线视频三区 | 久久久xxx| 精品一区电影 | 成人黄色av网址 | 91大神xh98xh系列全部 | 亚洲免费在线观看 | 中文字幕免费视频 | 日本精品一区二区三区视频 | 久久99精品久久久久久国产越南 | 操操日 | 一区二区三区高清 | 免费毛片在线 | 国产一区二区影院 | 国产在线二区 | 国产精品久久国产精品 | 亚洲狠狠| 九九爱这里只有精品 | 亚洲天堂一区二区 | 国产成人精品一区二区三区视频 | 国产精品无码专区在线观看 | 免费中文字幕 | 久久av一区二区三区 | 成人免费共享视频 |