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

Python命令行參數(shù)解析包argparse的使用詳解

 更新時(shí)間:2022年09月14日 10:22:46   作者:Se7eN_HOU  
argparse?是?python?自帶的命令行參數(shù)解析包,可以用來(lái)方便的服務(wù)命令行參數(shù)。本文將通過(guò)示例和大家詳細(xì)講講argparse的使用,需要的可以參考一下

一、argparse簡(jiǎn)介

argparse 是 python 自帶的命令行參數(shù)解析包,可以用來(lái)方便的服務(wù)命令行參數(shù),使用之前需要先導(dǎo)入包 import argparse

二、簡(jiǎn)單案例

簡(jiǎn)單使用,創(chuàng)建一個(gè)名為test.py的文件

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser()

# 添加一個(gè)接收參數(shù),默認(rèn)值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

打印結(jié)果為:

houlei@houleideMacBook-Pro argparse_demo % python3 test.py   # 此時(shí)在test.py后面沒(méi)有跟上參數(shù),
args = Namespace(name='Se7eN')   # 所以打印出來(lái)的name為默認(rèn)值 Se7eN

再次驗(yàn)證:

houlei@houleideMacBook-Pro argparse_demo % python3 test.py -n HOU   # 此時(shí)后面跟上了 -n 參數(shù),并且賦值HOU
args = Namespace(name='HOU')  # 打印出來(lái) name 的值為 HOU
houlei@houleideMacBook-Pro argparse_demo % python3 test.py --name hou  # 此時(shí)后面跟上了 --name 參數(shù),并賦值為hou
args = Namespace(name='hou')  # 打印出來(lái)的 name 的值為 hou
houlei@houleideMacBook-Pro argparse_demo %

解釋說(shuō)明

在上述代碼  parser.add_argument("-n", "--name", default="Se7eN") 中,有兩個(gè)參數(shù) “-n”和“--name” 分別代表什么?其中-n 和 --name 都是我們自己自定的參數(shù)名。至于n和name ,你可以隨便起個(gè)變量名都可以,但是要注意,前面的一個(gè) “-”和“--”才是關(guān)鍵。

一個(gè)“-”的參數(shù),例如:-n, 他其實(shí)相當(dāng)于我們?cè)趌iunx中使用的指令,一個(gè)自定義的指令。

兩個(gè)“--”的參數(shù),例如:--name 他就相當(dāng)于在程序中,用來(lái)接收對(duì)對(duì)應(yīng)指令值的變量,例如我們?cè)诳刂婆_(tái)上輸入 python3 test.py -n hou。 其中 -n 就代表使用的 -n 的指令,然后將后面的 hou 的值賦值給對(duì)應(yīng)的變量, -n 對(duì)應(yīng)的變量就是 --name 。所以我們使用print 打印的時(shí)候才顯示的name = hou

簡(jiǎn)單理解:一個(gè)“-”的是指令,兩個(gè)“--”的是接收指令內(nèi)容的變量。

三、ArgumentParser參數(shù)

ArgumentParse是解析器對(duì)象,在創(chuàng)建一個(gè)解析器對(duì)象的時(shí)候,是有很多參數(shù)可以配置,下面就演示一下這些參數(shù)的使用

1、prog: 程序的名稱(chēng)(默認(rèn)值:sys.argv[0])

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser()

# 添加一個(gè)接收參數(shù),默認(rèn)值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

執(zhí)行代碼:

修改代碼繼續(xù)演示

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname")    # 注意這里添加了prog=testname

# 添加一個(gè)接收參數(shù),默認(rèn)值為Se7eN
parser.add_argument("-n", "--name", default="Se7eN")

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

2、usage: 用來(lái)描述該程序的用途,并且會(huì)覆蓋原來(lái)的prog的顯示

修改部分程序:

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊")

展示結(jié)果

3、description:幫助文檔的描述和uasge功能類(lèi)似,只是顯示的位置不一樣

繼續(xù)修改部分代碼:

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似")

展示結(jié)果

4、epilog:幫助文檔的額外說(shuō)明,位置在最下面

繼續(xù)修改部分代碼:

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

展示結(jié)果:

5、自定義指令的前綴

默認(rèn)是"-" 和 "--",這里如果你不喜歡使用,也可以自通過(guò)該參數(shù)自己指定前綴,個(gè)人覺(jué)得沒(méi)必要。

代碼演示:

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象 ,并通過(guò)prefix_chars 指定指令的前綴為 '+'
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明", prefix_chars='+')

# 添加一個(gè)接收參數(shù),默認(rèn)值為Se7eN,這里的指令只能使用+ 表示,否則會(huì)報(bào)錯(cuò)
parser.add_argument("+n", "++name", default="Se7eN")

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

執(zhí)行結(jié)果

四、add_argument指令參數(shù)解釋

1、action: 的作用比較多,有保存布爾類(lèi)型,常量類(lèi)型,數(shù)組類(lèi)型的參數(shù)的功能

注意1:使用action = store_true/store_false 時(shí)修飾的指令是不能賦值的,其對(duì)應(yīng)的指令的值是布爾類(lèi)型的

注意2:使用action = store_const 時(shí)修飾的指令的是不能賦值,其對(duì)應(yīng)的指令的值常量類(lèi)型

注意3:使用action = append 是可以復(fù)制,其對(duì)應(yīng)的值會(huì)將該指令對(duì)應(yīng)的值放在一個(gè)數(shù)組中

1.1 先來(lái)演示

使用action,保存布爾類(lèi)型的指令的值:store_true/store_false:保存布爾類(lèi)型的變量:

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n,action = store_true 表示,<strong>在使用的時(shí)候,如果填寫(xiě)了該指令,那么該指令對(duì)應(yīng)的值就是true,如果沒(méi)有使用該指令,則為空</strong>
parser.add_argument("-n", "--name", action='store_true')

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

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

1.2、使用action設(shè)置常量指令

修改代碼演示:

# 添加一個(gè)接收參數(shù) -n,action = store_const 表示,在使用的時(shí)候,如果填寫(xiě)了該指令,那么該指就等于10 如果沒(méi)寫(xiě)就等于空
parser.add_argument("-n", "--name", action='store_const',const=10)

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

1.3、使用action設(shè)置數(shù)組類(lèi)型的指令

修改代碼演示:

# 添加一個(gè)接收參數(shù) -n,action = append, 會(huì)把該指令的值放在數(shù)組中
parser.add_argument("-n", "--name", action='append')

執(zhí)行結(jié)果

2、nargs參數(shù):表示該指令接收值的個(gè)數(shù)

示例1:

import argparse

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n, 并且該參數(shù)還必須要接收2個(gè)值,會(huì)放在一個(gè)數(shù)組中,其中nargs等于幾,就表示要接受幾個(gè)參數(shù)
parser.add_argument("-n", "--name", nargs=2)

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

運(yùn)行結(jié)果:

示例2:

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n,
# nargs = "?" :  表示只接收1個(gè)參數(shù),正則表達(dá)式的寫(xiě)法
# nargs = "+" :  表示接收1一個(gè)或多個(gè)參數(shù)
# nargs = "*" :  表示接收0個(gè)或者多個(gè)參數(shù)
parser.add_argument("-n", "--name", nargs="*")

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

打印結(jié)果就不演示了

3、required 該指令是必須的

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n,
# nargs = "?" :  表示只接收1個(gè)參數(shù),正則表達(dá)式的寫(xiě)法
# nargs = "+" :  表示接收1一個(gè)或多個(gè)參數(shù)
# nargs = "*" :  表示接收0個(gè)或者多個(gè)參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True)

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

演示結(jié)果:

4、choices:如有choices選項(xiàng),則該指令的值只能是choices中的一個(gè)

代碼演示

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n,
# nargs = "?" :  表示只接收1個(gè)參數(shù),正則表達(dá)式的寫(xiě)法
# nargs = "+" :  表示接收1一個(gè)或多個(gè)參數(shù)
# nargs = "*" :  表示接收0個(gè)或者多個(gè)參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

運(yùn)行結(jié)果:

五、vars()

vars()方法可以將parser對(duì)象變成字典,方便使用

代碼演示

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

# 創(chuàng)建一個(gè)argparse 的對(duì)象
parser = argparse.ArgumentParser(prog="testname", usage="這是功能描述模塊", description="這是程序的介紹,和usage的功能模塊描述類(lèi)似", epilog="額外說(shuō)明")

# 添加一個(gè)接收參數(shù) -n,
# nargs = "?" :  表示只接收1個(gè)參數(shù),正則表達(dá)式的寫(xiě)法
# nargs = "+" :  表示接收1一個(gè)或多個(gè)參數(shù)
# nargs = "*" :  表示接收0個(gè)或者多個(gè)參數(shù)
parser.add_argument("-n", "--name", nargs="*", required=True, choices=['zhangsan', 'lisi'])

# 獲取對(duì)應(yīng)的參數(shù)的值
args = parser.parse_args()

# 控制臺(tái)打印出來(lái)接收到的值
print("args = {}".format(args))

# 將parser 變成字典對(duì)象
print('arg_vars = {}'.format(vars(args)))

輸出結(jié)果:

以上就是Python命令行參數(shù)解析包argparse的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Python argparse的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例

    python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例

    今天小編就為大家分享一篇python 實(shí)現(xiàn)交換兩個(gè)列表元素的位置示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • NumPy數(shù)組創(chuàng)建方法與索引訪問(wèn)詳解

    NumPy數(shù)組創(chuàng)建方法與索引訪問(wèn)詳解

    這篇文章主要介紹了NumPy數(shù)組創(chuàng)建方法與索引訪問(wèn),NumPy 中的核心數(shù)據(jù)結(jié)構(gòu)是 ndarray,它代表多維數(shù)組,NumPy 提供了多種方法來(lái)創(chuàng)建 ndarray 對(duì)象,文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • python Plotly繪圖工具的簡(jiǎn)單使用

    python Plotly繪圖工具的簡(jiǎn)單使用

    這篇文章主要介紹了python Plotly繪圖工具的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python3使用diagrams繪制架構(gòu)圖的步驟

    python3使用diagrams繪制架構(gòu)圖的步驟

    這篇文章主要介紹了python3使用diagrams生成架構(gòu)圖的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python+Matplotlib繪制發(fā)散條形圖的示例代碼

    Python+Matplotlib繪制發(fā)散條形圖的示例代碼

    發(fā)散條形圖(Diverging Bar)是一種用于顯示數(shù)據(jù)分布的圖表,可以幫助我們比較不同類(lèi)別或分組的數(shù)據(jù)的差異和相對(duì)性,本文介紹了Matplotlib繪制發(fā)散條形圖的函數(shù)源碼,需要的可以參考一下
    2023-06-06
  • python使用回溯算法實(shí)現(xiàn)列表全排列

    python使用回溯算法實(shí)現(xiàn)列表全排列

    這篇文章主要介紹了python使用回溯算法實(shí)現(xiàn)列表全排列,研究的問(wèn)題是輸入列表L(不含重復(fù)元素),輸出L的全排列,全排列問(wèn)題,可以用回溯法解決,需要的朋友可以參考下
    2023-11-11
  • Python Flask入門(mén)之模板

    Python Flask入門(mén)之模板

    今天小編就為大家分享一篇Python Flask模板的入門(mén)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-11-11
  • 對(duì)python中的try、except、finally 執(zhí)行順序詳解

    對(duì)python中的try、except、finally 執(zhí)行順序詳解

    今天小編就為大家分享一篇對(duì)python中的try、except、finally 執(zhí)行順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python cookbook(字符串與文本)在字符串的開(kāi)頭或結(jié)尾處進(jìn)行文本匹配操作

    Python cookbook(字符串與文本)在字符串的開(kāi)頭或結(jié)尾處進(jìn)行文本匹配操作

    這篇文章主要介紹了Python cookbook(字符串與文本)在字符串的開(kāi)頭或結(jié)尾處進(jìn)行文本匹配操作,涉及Python使用str.startswith()和str.endswith()方法針對(duì)字符串開(kāi)始或結(jié)尾處特定文本匹配操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04
  • 推薦11個(gè)實(shí)用Python庫(kù)

    推薦11個(gè)實(shí)用Python庫(kù)

    這篇文章主要推薦了11個(gè)實(shí)用Python庫(kù),都有這不錯(cuò)的群眾基礎(chǔ),非常好用,也都很實(shí)用,推薦給大家。
    2015-01-01

最新評(píng)論

永康市| 荥阳市| 左云县| 怀远县| 长岛县| 常山县| 库伦旗| 兴安县| 鹤岗市| 固阳县| 宕昌县| 衡阳县| 论坛| 凤山县| 高陵县| 柘荣县| 平塘县| 西华县| 韩城市| 永修县| 吉木乃县| 十堰市| 景宁| 板桥市| 黄龙县| 大埔县| 新田县| 南平市| 克什克腾旗| 布拖县| 湛江市| 尤溪县| 东乡| 湘阴县| 延庆县| 科尔| 香港| 邵东县| 阜城县| 寻乌县| 沧源|