最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3?sys?模塊常用功能及實(shí)戰(zhàn)場(chǎng)景

 更新時(shí)間:2025年11月11日 08:46:40   作者:小陶coding  
在Python中,sys模塊是與解釋器交互的橋梁,提供了一系列用于訪問(wèn) Python 解釋器本身和操作系統(tǒng)相關(guān)信息的函數(shù)與變量,本文將系統(tǒng)講解sys模塊的常用功能及實(shí)戰(zhàn)場(chǎng)景,幫助你高效利用其特性,感興趣的朋友跟隨小編一起看看吧

在 Python 中,sys模塊是與解釋器交互的橋梁,提供了一系列用于訪問(wèn) Python 解釋器本身和操作系統(tǒng)相關(guān)信息的函數(shù)與變量。無(wú)論是獲取命令行參數(shù)、控制程序退出、還是查看系統(tǒng)環(huán)境,sys模塊都扮演著不可或缺的角色。本文將系統(tǒng)講解sys模塊的常用功能及實(shí)戰(zhàn)場(chǎng)景,幫助你高效利用其特性。

一、sys 模塊的基本使用

sys模塊是 Python 標(biāo)準(zhǔn)庫(kù)的一部分,無(wú)需額外安裝,直接導(dǎo)入即可使用:

import sys

二、核心功能與常用變量

1. 命令行參數(shù):sys.argv

sys.argv是一個(gè)列表,存儲(chǔ)程序運(yùn)行時(shí)傳入的命令行參數(shù),其中:

  • sys.argv[0]:當(dāng)前腳本的文件名(或路徑);
  • sys.argv[1:]:實(shí)際傳入的參數(shù)列表。

示例:創(chuàng)建demo.py腳本:

import sys
print("腳本名:", sys.argv[0])
print("參數(shù)列表:", sys.argv[1:])
print("參數(shù)個(gè)數(shù):", len(sys.argv) - 1)

運(yùn)行命令及輸出:

python demo.py hello world 123

 腳本名: demo.py

參數(shù)列表: ['hello', 'world', '123']
參數(shù)個(gè)數(shù): 3

應(yīng)用場(chǎng)景:處理命令行輸入(如腳本參數(shù)解析、批量任務(wù)處理)。

2. 退出程序:sys.exit([status])

sys.exit()用于終止當(dāng)前程序,可選參數(shù)status表示退出狀態(tài):

  • status為整數(shù):0 表示正常退出(默認(rèn)),非 0 表示異常退出(可被操作系統(tǒng)捕獲);
  • status為字符串:會(huì)打印該字符串并以狀態(tài)碼 1 退出。

示例

import sys
if len(sys.argv) < 2:
    sys.exit("錯(cuò)誤:請(qǐng)?zhí)峁┲辽僖粋€(gè)參數(shù)")  # 異常退出,輸出提示
sys.exit(0)  # 正常退出

3. 標(biāo)準(zhǔn)輸入 / 輸出 / 錯(cuò)誤流:sys.stdin、sys.stdout、sys.stderr

這三個(gè)變量分別代表標(biāo)準(zhǔn)輸入(鍵盤)、標(biāo)準(zhǔn)輸出(屏幕)、標(biāo)準(zhǔn)錯(cuò)誤流,均為文件對(duì)象,可用于重定向輸入輸出。

示例 1:重定向標(biāo)準(zhǔn)輸出到文件

import sys
# 保存原始stdout
original_stdout = sys.stdout
# 將輸出寫入文件
with open("output.txt", "w") as f:
    sys.stdout = f  # 重定向stdout到文件
    print("這段文字會(huì)寫入文件")
    print("而不是顯示在屏幕上")
# 恢復(fù)原始stdout
sys.stdout = original_stdout
print("已恢復(fù)正常輸出")

示例 2:從標(biāo)準(zhǔn)輸入讀取內(nèi)容

import sys
print("請(qǐng)輸入內(nèi)容(按Ctrl+D結(jié)束):")
for line in sys.stdin:  # 逐行讀取鍵盤輸入
    print("你輸入了:", line.strip())

4. 系統(tǒng)相關(guān)信息

(1)Python 解釋器版本:sys.version、sys.version_info

  • sys.version:字符串形式的版本信息(如'3.9.7 (default, Sep 10 2021, 14:59:43) [GCC 8.4.0]');
  • sys.version_info:元組形式的版本信息(包含主版本、次版本等),便于版本判斷。

示例

import sys
if sys.version_info >= (3, 6):
    print("Python 3.6及以上版本,支持f-string")
else:
    print("Python版本過(guò)低,不支持f-string")

(2)操作系統(tǒng)平臺(tái):sys.platform

返回當(dāng)前操作系統(tǒng)的標(biāo)識(shí)符,常見值:

  • win32:Windows 系統(tǒng);
  • linux:Linux 系統(tǒng);
  • darwin:macOS 系統(tǒng)。

示例

import sys
if sys.platform == "win32":
    print("Windows系統(tǒng),路徑分隔符為\\")
elif sys.platform == "linux":
    print("Linux系統(tǒng),路徑分隔符為/")

(3)路徑分隔符:sys.pathsep、sys.sep

  • sys.pathsep:用于分隔環(huán)境變量PATH的符號(hào)(Windows 為;,Linux/macOS 為:);
  • sys.sep:路徑中的目錄分隔符(Windows 為\,Linux/macOS 為/)。

5. 模塊搜索路徑:sys.path

sys.path是一個(gè)列表,存儲(chǔ) Python 解釋器查找模塊的路徑。當(dāng)使用import導(dǎo)入模塊時(shí),解釋器會(huì)依次搜索sys.path中的目錄。

示例

import sys
print("模塊搜索路徑:")
for path in sys.path:
    print(path)
# 臨時(shí)添加自定義路徑(程序退出后失效)
sys.path.append("/home/user/my_modules")

應(yīng)用場(chǎng)景:動(dòng)態(tài)添加自定義模塊所在目錄,解決 “模塊找不到” 問(wèn)題。

6. 遞歸深度限制:sys.getrecursionlimit()、sys.setrecursionlimit(n)

Python 默認(rèn)遞歸深度限制為 1000,超過(guò)會(huì)拋出RecursionError。可通過(guò)這兩個(gè)函數(shù)查看或修改限制(需謹(jǐn)慎,過(guò)大可能導(dǎo)致內(nèi)存溢出)。

示例

import sys
print("默認(rèn)遞歸深度:", sys.getrecursionlimit())  # 輸出:1000
sys.setrecursionlimit(2000)  # 修改為2000

三、實(shí)戰(zhàn)場(chǎng)景示例

1. 命令行參數(shù)解析(簡(jiǎn)易版)

實(shí)現(xiàn)一個(gè)計(jì)算兩數(shù)之和的腳本,通過(guò)命令行傳入?yún)?shù):

import sys
def add(a, b):
    return a + b
if __name__ == "__main__":
    if len(sys.argv) != 3:
        sys.exit("用法:python add.py <數(shù)字1> <數(shù)字2>")
    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
        print(f"{num1} + {num2} = {add(num1, num2)}")
    except ValueError:
        sys.exit("錯(cuò)誤:請(qǐng)輸入有效的數(shù)字")

運(yùn)行效果:

python add.py 3.5 4.2

3.5 + 4.2 = 7.7

2. 捕獲程序異常并正常退出

在程序崩潰時(shí),通過(guò)sys.exit()返回非 0 狀態(tài)碼,便于外部腳本判斷執(zhí)行結(jié)果:

import sys
try:
    # 模擬可能出錯(cuò)的代碼
    result = 1 / 0
except ZeroDivisionError as e:
    print(f"程序出錯(cuò):{e}", file=sys.stderr)  # 錯(cuò)誤信息寫入stderr
    sys.exit(1)  # 異常退出,狀態(tài)碼1
sys.exit(0)  # 正常退出

3. 限制程序運(yùn)行時(shí)間

結(jié)合signal模塊(Linux/macOS)和sys.exit(),實(shí)現(xiàn)程序超時(shí)自動(dòng)退出:

import sys
import signal
def timeout_handler(signum, frame):
    sys.exit("程序超時(shí),自動(dòng)退出")
# 設(shè)置超時(shí)時(shí)間為5秒
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(5)
# 模擬耗時(shí)操作(若超過(guò)5秒則觸發(fā)超時(shí))
import time
time.sleep(6)  # 超過(guò)5秒,觸發(fā)超時(shí)

四、注意事項(xiàng)

  • sys.exit()exit()的區(qū)別:
    • sys.exit()是模塊級(jí)函數(shù),功能更靈活(支持狀態(tài)碼),適合在腳本中使用;
    • exit()是交互式解釋器中的函數(shù),本質(zhì)上調(diào)用sys.exit(),不建議在腳本中使用。
  • sys.path的修改范圍:通過(guò)sys.path.append()添加的路徑僅在當(dāng)前程序運(yùn)行時(shí)有效,不會(huì)修改系統(tǒng)環(huán)境變量。
  • 跨平臺(tái)兼容性:使用sys.platformsys.sep等變量處理路徑或系統(tǒng)相關(guān)邏輯,避免硬編碼(如直接寫死\/)。

總結(jié)

sys模塊是 Python 與系統(tǒng)交互的核心工具,其功能涵蓋命令行參數(shù)處理、程序退出控制、輸入輸出重定向、系統(tǒng)信息獲取等多個(gè)方面。掌握sys.argvsys.exit()、sys.path等核心成員,能幫助你編寫更靈活、更貼近系統(tǒng)的 Python 程序,尤其在腳本開發(fā)、命令行工具編寫等場(chǎng)景中不可或缺。合理利用sys模塊的特性,可顯著提升程序的適應(yīng)性和可控性。

到此這篇關(guān)于Python3 sys 模塊的文章就介紹到這了,更多相關(guān)Python3 sys 模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬取讀者并制作成PDF

    Python爬取讀者并制作成PDF

    本文是在學(xué)習(xí)了beautifulsoup之后,制作的一個(gè)爬取讀者雜志并使用reportlab制作成pdf的python小工具,咱也文藝一下:),分享給大家,有需要的小伙伴參考下吧。
    2015-03-03
  • Python實(shí)現(xiàn)隨機(jī)游走的示例代碼

    Python實(shí)現(xiàn)隨機(jī)游走的示例代碼

    隨機(jī)游走是一個(gè)數(shù)學(xué)對(duì)象,稱為隨機(jī)或隨機(jī)過(guò)程,它描述了一條路徑,該路徑由一些數(shù)學(xué)空間上的一系列隨機(jī)步驟組成,下面我們就來(lái)學(xué)習(xí)一下Python如何實(shí)現(xiàn)隨機(jī)游走的吧
    2023-12-12
  • python如何進(jìn)行矩陣運(yùn)算

    python如何進(jìn)行矩陣運(yùn)算

    在本篇文章里小編給大家分享的是關(guān)于python進(jìn)行矩陣運(yùn)算的方法及實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python數(shù)學(xué)建模PuLP庫(kù)線性規(guī)劃進(jìn)階基于字典詳解

    Python數(shù)學(xué)建模PuLP庫(kù)線性規(guī)劃進(jìn)階基于字典詳解

    在大規(guī)模的規(guī)劃問(wèn)題中,這樣逐個(gè)定義變量和設(shè)置模型參數(shù)非常繁瑣,效率很低。Pulp 庫(kù)提供了一種快捷方式,可以結(jié)合 Python語(yǔ)言的循環(huán)和容器,使用字典來(lái)創(chuàng)建問(wèn)題
    2021-10-10
  • 使用Python編寫簡(jiǎn)單的畫圖板程序的示例教程

    使用Python編寫簡(jiǎn)單的畫圖板程序的示例教程

    這篇文章主要介紹了使用Python編寫簡(jiǎn)單的畫圖板軟件的示例教程,利用到了經(jīng)常被用來(lái)做游戲的pygame模塊,需要的朋友可以參考下
    2015-12-12
  • 基于pandas向csv添加新的行和列

    基于pandas向csv添加新的行和列

    這篇文章主要介紹了基于pandas向csv添加新的行和列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 用Python和WordCloud繪制詞云的實(shí)現(xiàn)方法(內(nèi)附讓字體清晰的秘笈)

    用Python和WordCloud繪制詞云的實(shí)現(xiàn)方法(內(nèi)附讓字體清晰的秘笈)

    這篇文章主要介紹了用Python和WordCloud繪制詞云的實(shí)現(xiàn)方法(內(nèi)附讓字體清晰的秘笈),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • python爬取晉江文學(xué)城小說(shuō)評(píng)論(情緒分析)

    python爬取晉江文學(xué)城小說(shuō)評(píng)論(情緒分析)

    這篇文章主要介紹了使用python爬取晉江文學(xué)城小說(shuō)評(píng)論(情緒分析),全文代碼詳細(xì),邏輯清晰,很適合學(xué)習(xí)爬蟲爬取的朋友,需要的朋友可以參考下
    2021-04-04
  • Python實(shí)現(xiàn)全排列的打印

    Python實(shí)現(xiàn)全排列的打印

    這篇文章主要為大家詳介紹了Python實(shí)現(xiàn)全排列的打印的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python tiktoken的簡(jiǎn)介、安裝、使用方法

    python tiktoken的簡(jiǎn)介、安裝、使用方法

    tiktoken是OpenAI于近期開源的Python第三方模塊,該模塊主要實(shí)現(xiàn)了tokenizer的BPE(Byte pair encoding)算法,并對(duì)運(yùn)行性能做了極大的優(yōu)化,本文將介紹python tiktoken的簡(jiǎn)介、安裝、使用方法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10

最新評(píng)論

安溪县| 河池市| 象州县| 永胜县| 郓城县| 瓮安县| 玉环县| 景泰县| 炉霍县| 岗巴县| 沙湾县| 盘锦市| 尼木县| 澄城县| 无棣县| 上思县| 勐海县| 马关县| 汝阳县| 邵阳县| 顺义区| 兴安盟| 赤壁市| 庆城县| 揭东县| 巴彦淖尔市| 遂溪县| 高安市| 宜春市| 得荣县| 云和县| 阜新| 砚山县| 天祝| 黄大仙区| 盐边县| 丰顺县| 奉贤区| 通辽市| 上饶市| 东光县|