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

python程序運(yùn)行添加命令行參數(shù)argparse模塊具體用法詳解

 更新時(shí)間:2024年01月06日 10:38:43   作者:Elaine猿  
這篇文章主要給大家介紹了關(guān)于python程序運(yùn)行添加命令行參數(shù)argparse模塊具體用法的相關(guān)資料,argparse是Python內(nèi)置的一個(gè)用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,通過(guò)在程序中定義好我們需要的參數(shù),需要的朋友可以參考下

一. argparse介紹

很多時(shí)候,我們的程序要帶參數(shù)來(lái)運(yùn)行不同的功能,需要解析命令行參數(shù)。argparse模塊能夠很好的提供支持。

argparse是 python 自帶的命令行參數(shù)解析包,用于解析命令行參數(shù)的標(biāo)準(zhǔn)模塊??梢宰屓溯p松編寫(xiě)用戶(hù)友好的命令行接口,還會(huì)自動(dòng)生成幫助和使用手冊(cè),并在用戶(hù)給程序傳入無(wú)效參數(shù)時(shí)報(bào)出錯(cuò)誤信息。

二. 使用步驟及參數(shù)介紹

argparse模塊的使用可以簡(jiǎn)化成下面四個(gè)步驟:

1)import argparse 導(dǎo)入模塊

2)parser = argparse.ArgumentParser() 創(chuàng)建一個(gè)解析對(duì)象(命令行解析器)
  ArgumentParser對(duì)象的相關(guān)屬性,全部參數(shù):

3)parser.add_argument() 向該對(duì)象中添加要關(guān)注的命令行參數(shù)和選項(xiàng),每一個(gè)add_argument方法對(duì)應(yīng)一個(gè)要關(guān)注的參數(shù)或選項(xiàng);

add_argument相關(guān)屬性,全部參數(shù):

屬性解釋
name or flags一個(gè)命名或者一個(gè)選項(xiàng)字符串的列表,例如 foo 或 -f, --foo。
action當(dāng)參數(shù)在命令行中出現(xiàn)時(shí)使用的動(dòng)作基本類(lèi)型。
nargs命令行參數(shù)應(yīng)當(dāng)消耗的數(shù)目。
const被一些 action 和 nargs 選擇所需求的常數(shù)。
default當(dāng)參數(shù)未在命令行中出現(xiàn)并且也不存在于命名空間對(duì)象時(shí)所產(chǎn)生的值。
type命令行參數(shù)應(yīng)當(dāng)被轉(zhuǎn)換成的類(lèi)型。
choices可用的參數(shù)的容器。
required此命令行選項(xiàng)是否可省略 (僅選項(xiàng)可用)。
help一個(gè)此選項(xiàng)作用的簡(jiǎn)單描述。
metavar在使用方法消息中使用的參數(shù)值示例。
dest被添加到 parse_args() 所返回對(duì)象上的屬性名。

4)parser.parse_args() 調(diào)用parse_args()方法進(jìn)行解析

parse_args相關(guān)屬性,全部參數(shù):

屬性解釋默認(rèn)值
args要解析的字符串列表從 sys.argv 獲取。
namespace用于獲取屬性的對(duì)象一個(gè)新的空 Namespace 對(duì)象。

三. 具體使用

add_argument() 方法必須知道它是否是一個(gè)選項(xiàng),例如 -f 或 --foo,或是一個(gè)位置參數(shù)。

第一個(gè)傳遞給 add_argument() 的參數(shù)必須是一系列旗標(biāo)或者是一個(gè)簡(jiǎn)單的參數(shù)名。

當(dāng) parse_args() 被調(diào)用,選項(xiàng)會(huì)以 - 前綴識(shí)別,剩下的參數(shù)則會(huì)被假定為位置參數(shù)。

-(橫杠)和 (雙橫杠)都是用來(lái)表示命令行參數(shù)的前綴符號(hào):

-用來(lái)表示短參數(shù)(Short options),通常只有一個(gè)字符。

–用來(lái)表示長(zhǎng)參數(shù)(Long options),通常是一個(gè)單詞或短語(yǔ)。

在argparse中,-和–可以用來(lái)定義命令行參數(shù)的簡(jiǎn)寫(xiě)和全名,例如:parser.add_argument(‘-n’, ‘–name’, help=‘輸入姓名’)

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', '--name', help='輸入姓名')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)

帶參執(zhí)行結(jié)果:

3.1 設(shè)置必需參數(shù)

add_argument方法的required參數(shù)可以設(shè)置該參數(shù)是否是必需。

如果該參數(shù)設(shè)置為必需參數(shù),程序執(zhí)行時(shí)未指定該參數(shù)會(huì)報(bào)錯(cuò)!

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', help='輸入姓名', required=True)
    parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)
    # 獲得指定的參數(shù)
    print(args.name)

運(yùn)行 python test.py 和 python test.py --name Elaine

結(jié)果:

3.2 傳一個(gè)參數(shù)

add_argument添加一個(gè)參數(shù)選項(xiàng)

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', help='輸入姓名')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)
    # 獲得指定的參數(shù)
    print(args.name)

運(yùn)行程序 -h 看一下效果

D:\>python test.py -h
usage: test.py [-h] [--name NAME]

optional arguments:
  -h, --help   show this help message and exit
  --name NAME  輸入姓名

帶一個(gè)參數(shù)和帶三個(gè)參數(shù)運(yùn)行的結(jié)果:

可以看到,這種情形下傳入三個(gè)參數(shù)會(huì)報(bào)錯(cuò)!

3.3 傳多個(gè)參數(shù)

1)add_argument加上nargs參數(shù),nargs是用來(lái)說(shuō)明傳入的參數(shù)個(gè)數(shù),例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs=3, help='輸入姓名')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)
    # 獲得指定的參數(shù)
    print(args.name)

運(yùn)行 python test.py --name Elaine 和 python test.py --name Elaine Elaine1 Elaine2

結(jié)果:

2)nargs為’+’ 表示傳入至少一個(gè)參數(shù),可以不用指定具體多少個(gè)參數(shù),例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs='+', help='輸入姓名')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)
    # 獲得指定的參數(shù)
    print(args.name)

運(yùn)行 python test.py --name Elaine 和 python test.py --name Elaine Elaine1 Elaine2

結(jié)果:

3.4 位置參數(shù)和可選參數(shù)

add_argument() 方法必須知道它是否是一個(gè)選項(xiàng),例如 -f 或 --foo,或是一個(gè)位置參數(shù)。

第一個(gè)傳遞給 add_argument() 的參數(shù)必須是一系列旗標(biāo)或者是一個(gè)簡(jiǎn)單的參數(shù)名。

當(dāng) parse_args() 被調(diào)用,選項(xiàng)會(huì)以 - 前綴識(shí)別,剩下的參數(shù)則會(huì)被假定為位置參數(shù)。

1)位置參數(shù)

add_argument第一個(gè)參數(shù)可以這么創(chuàng)建:parser.add_argument(‘name’, help=‘輸入姓名’)

其中第一個(gè)參數(shù)可以是任何參數(shù)名,但前面不要加 - (橫杠)或 (雙橫杠)

這些參數(shù)是不帶前綴的參數(shù),它們通常用于需要按特定順序提供的參數(shù),且通常是必需的。

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='命令行中傳入一個(gè)參數(shù)')
    parser.add_argument('name', help='輸入姓名')
    parser.add_argument('country', help='國(guó)家')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)

執(zhí)行 python test.py Elaine China 和 python test.py China Elaine

結(jié)果:

所以位置參數(shù)都是順序的,在命令行中傳入?yún)?shù)時(shí)候,傳入的參數(shù)的先后順序不同,運(yùn)行結(jié)果往往會(huì)不同!

執(zhí)行 python test.py Elaine 時(shí)缺少第二個(gè)位置參數(shù)會(huì)報(bào)錯(cuò),所以位置參數(shù)通常是必須的。例如:

2)可選參數(shù)

為了在命令行中避免上述位置參數(shù)的順序混亂,可以使用可選參數(shù)。這個(gè)很像關(guān)鍵詞傳參,但是需要在關(guān)鍵詞前面加-

例如:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--name', nargs='+', help='輸入姓名')
    parser.add_argument('--country', nargs='+', help='國(guó)家名稱(chēng)')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)

執(zhí)行 python test.py --name Elaine Elaine1 Elaine2 和 python test.py --name Elaine Elaine1 Elaine2 --country China

結(jié)果:

可選參數(shù)雖然寫(xiě)法比較繁瑣,但是增加了命令行中的可讀性,不容易因?yàn)閰?shù)傳入順序?qū)е聰?shù)據(jù)錯(cuò)亂。

3.5 參數(shù)設(shè)置默認(rèn)值

add_argument加上default參數(shù)

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-n', '--name', help='輸入姓名')
    parser.add_argument('-c', '--country', default='China', help='國(guó)家名稱(chēng)')
    args = parser.parse_args()
    # 獲得傳入的參數(shù)
    print(args)

運(yùn)行python test.py --name Elaine 和 python test.py

結(jié)果:

3.6 其它用法

想要了解更多,可以去看看官方文檔

參考官方文檔:https://docs.python.org/zh-cn/3.9/library/argparse.html#parents

總結(jié)

到此這篇關(guān)于python程序運(yùn)行添加命令行參數(shù)argparse模塊具體用法的文章就介紹到這了,更多相關(guān)python命令行參數(shù)argparse模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python如何基于Tesseract實(shí)現(xiàn)識(shí)別文字功能

    Python如何基于Tesseract實(shí)現(xiàn)識(shí)別文字功能

    這篇文章主要介紹了Python如何基于Tesseract實(shí)現(xiàn)識(shí)別文字功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python中的占位符pass用法

    Python中的占位符pass用法

    在 Python 中,pass 是一個(gè)空操作語(yǔ)句,表示“什么都不做”,它通常用作占位符,用于在語(yǔ)法上需要語(yǔ)句但實(shí)際不需要執(zhí)行任何操作的場(chǎng)景,本文給大家介紹Python中的占位符pass用法,感興趣的朋友一起看看吧
    2025-04-04
  • Conda創(chuàng)建新環(huán)境的詳細(xì)圖文教程

    Conda創(chuàng)建新環(huán)境的詳細(xì)圖文教程

    Anaconda功能龐大,其可以理解為一個(gè)工具,也是一個(gè)可執(zhí)行命令,下面這篇文章主要給大家介紹了關(guān)于Conda創(chuàng)建新環(huán)境的詳細(xì)圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Python爬蟲(chóng)動(dòng)態(tài)IP代理使用及防止被封的方法

    Python爬蟲(chóng)動(dòng)態(tài)IP代理使用及防止被封的方法

    在進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)時(shí),經(jīng)常會(huì)遇到網(wǎng)站的反爬機(jī)制,其中之一就是通過(guò)IP封禁來(lái)限制爬蟲(chóng)的訪(fǎng)問(wèn),為了規(guī)避這種限制,使用動(dòng)態(tài)IP代理是一種有效的方法,本文將介紹在Python爬蟲(chóng)中如何使用動(dòng)態(tài)IP代理,以及一些防止被封的方法,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2023-11-11
  • Python實(shí)現(xiàn)從多個(gè)數(shù)據(jù)源(CSV,Excel,SQL)自動(dòng)整合數(shù)據(jù)

    Python實(shí)現(xiàn)從多個(gè)數(shù)據(jù)源(CSV,Excel,SQL)自動(dòng)整合數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)從多個(gè)數(shù)據(jù)源(CSV,Excel,SQL)自動(dòng)整合數(shù)據(jù),文中的示例代碼講解詳細(xì),有需要的可以了解下
    2025-10-10
  • python模塊導(dǎo)入的細(xì)節(jié)詳解

    python模塊導(dǎo)入的細(xì)節(jié)詳解

    這篇文章主要給大家介紹了關(guān)于python模塊導(dǎo)入細(xì)節(jié)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 關(guān)于Python中模塊的簡(jiǎn)介、定義與使用

    關(guān)于Python中模塊的簡(jiǎn)介、定義與使用

    這篇文章主要介紹了關(guān)于Python中模塊的簡(jiǎn)介、定義與使用,模塊是Python的重要組成部分,需要的朋友可以參考下
    2023-04-04
  • 使用Python操作Redis的完整指南

    使用Python操作Redis的完整指南

    Redis作為業(yè)界主流的內(nèi)存數(shù)據(jù)庫(kù),配合Python的redis-py庫(kù),能在不改變業(yè)務(wù)代碼結(jié)構(gòu)的前提下,把數(shù)據(jù)庫(kù)的查詢(xún)壓力降低90%以上,今天我們就從零開(kāi)始,聊聊怎么用Python操作Redis,搭一套真正能打的緩存系統(tǒng),需要的朋友可以參考下
    2026-03-03
  • Jupyter notebook 遠(yuǎn)程配置及SSL加密教程

    Jupyter notebook 遠(yuǎn)程配置及SSL加密教程

    這篇文章主要介紹了Jupyter notebook 遠(yuǎn)程配置及SSL加密教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • pandas基礎(chǔ)?Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出

    pandas基礎(chǔ)?Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出

    這篇文章主要介紹了pandas基礎(chǔ)Series與Dataframe與numpy對(duì)二進(jìn)制文件輸入輸出,series是一種一維的數(shù)組型對(duì)象,它包含了一個(gè)值序列和一個(gè)數(shù)據(jù)標(biāo)簽
    2022-07-07

最新評(píng)論

汪清县| 宜春市| 阿巴嘎旗| 牙克石市| 富民县| 广德县| 江西省| 新绛县| 锦州市| 巨鹿县| 灌云县| 大化| 甘肃省| 隆德县| 枣庄市| 桦南县| 天长市| 库尔勒市| 冷水江市| 塘沽区| 屏东市| 新野县| 边坝县| 达日县| 奈曼旗| 万州区| 阳东县| 巴里| 松阳县| 宕昌县| 遂川县| 唐河县| 天等县| 齐河县| 云林县| 福海县| 巴彦县| 丽江市| 新宾| 洱源县| 德令哈市|