網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Python?argparse模塊實(shí)現(xiàn)解析命令行參數(shù)方法詳解_python
作者:fengbingchun ? 更新時(shí)間: 2022-11-13 編程語(yǔ)言argparse是Python的一個(gè)標(biāo)準(zhǔn)模塊,用于解析命令行參數(shù),即解析sys.argv中定義的參數(shù)。實(shí)現(xiàn)在:傳送門(mén)
argparse模塊還會(huì)自動(dòng)生成幫助和使用信息,即在最后加-h或--help。當(dāng)用戶輸入的參數(shù)無(wú)效時(shí),會(huì)觸發(fā)error,并給出出錯(cuò)原因。
python test_argparse.py -h
python test_argparse.py --help
使用argparse的步驟:
1.創(chuàng)建解析器:argparse.ArgumentParser(),ArgumentParser是個(gè)class,構(gòu)造它時(shí)有很多參數(shù)可以指定,若不指定這些參數(shù)都使用默認(rèn)值,如description=None:此python程序功能的描述;add_help=True:添加-h/--help選項(xiàng)
parser = argparse.ArgumentParser(description="test argparse's use", add_help=True)
2.添加參數(shù):parser.add_argument(*args, **kwargs):*args允許函數(shù)接受任意數(shù)量的位置參數(shù)(positional arguments),**kwargs允許函數(shù)接受任意數(shù)量的關(guān)鍵字參數(shù)。Python不允許位置參數(shù)跟在關(guān)鍵字參數(shù)之后。
(1).name or flags:一個(gè)名字,位置參數(shù)(positional arguments),不帶有"-"或"--",如foo;一個(gè)可選字符串的列表,如-f, --foo。當(dāng)parse_args()被調(diào)用時(shí),可選參數(shù)會(huì)以"-"前綴識(shí)別,剩下的參數(shù)則會(huì)被假定為位置參數(shù)。
parser.add_argument("integers", metavar="N", type=int, nargs="+", help="an integer for the accumulator") # positional argument
parser.add_argument("--sum", dest="accumulate", action="store_const", const=sum, default=max, help="sum the integers(default: find the max)") # optional argument
args = parser.parse_args()
print(args.accumulate(args.integers)) # print either the sum or the max of the command-line integers
(2).action:ArgumentParser對(duì)象將命令行參數(shù)與action相關(guān)聯(lián)。這些action可以做與它們相關(guān)聯(lián)的命令行參數(shù)的任何事,盡管大多數(shù)action只是簡(jiǎn)單的向parse_args()返回的對(duì)象上添加一個(gè)屬性。action關(guān)鍵字參數(shù)指定應(yīng)如何處理命令行參數(shù)。默認(rèn)的action是"store",存儲(chǔ)參數(shù)的值。
(3).nargs:此關(guān)鍵字參數(shù)將不同數(shù)量的命令行參數(shù)與單個(gè)操作相關(guān)聯(lián)。
"?":如果不存在命令行參數(shù),則會(huì)使用default值;還有一種情況,"-"選項(xiàng)字符串存在,但后面沒(méi)有跟著命令行參數(shù),則會(huì)使用const值。
"*":所有命令行參數(shù)都收集到一個(gè)列表中。
"+":與"*"類(lèi)似,但至少存在一個(gè)命令行參數(shù),否則會(huì)產(chǎn)生錯(cuò)誤消息。
parser.add_argument('--foo', nargs='?', const='c', default='d')
args = parser.parse_args()
print(args.foo) # print 'c' or 'd' or command-line input
(4).const:此關(guān)鍵字參數(shù)用于保存不是從命令行中讀取但被各種ArgumentParser操作所需的常量值。對(duì)'store_const'和'append_const' action,const關(guān)鍵字參數(shù)必須給出;對(duì)其它action,默認(rèn)為None。
(5).default:此關(guān)鍵字參數(shù)用于在命令行參數(shù)不存在應(yīng)使用的值,默認(rèn)值為None。
(6).type:此關(guān)鍵字參數(shù)允許執(zhí)行任何必要的類(lèi)型檢查和類(lèi)型轉(zhuǎn)換。
(7).choices:某些命令行參數(shù)應(yīng)當(dāng)從一組受限值中選擇,這些可以通過(guò)將容器對(duì)象作為choices關(guān)鍵字參數(shù)傳遞給add_argument()來(lái)處理。當(dāng)執(zhí)行命令行解析時(shí),參數(shù)值將被檢查,如果參數(shù)不是可接受的值之一將觸發(fā)錯(cuò)誤消息。
parser.add_argument('addr', type=str, choices=['csdn', 'github'])
args = parser.parse_args()
print("addr:", args.addr)
(8).required:通常,argparse模塊假定"-f"和"--bar"等標(biāo)志表示可選參數(shù),在命令行中始終可以省略這些參數(shù)。要讓一個(gè)選項(xiàng)成為必需的,則可以將required關(guān)鍵字參數(shù)指定為T(mén)rue。
(9).help:包含參數(shù)簡(jiǎn)短描述的字符串。通常在命令行中使用-h或--help時(shí),這些help描述將與每個(gè)參數(shù)一起顯示。
(10).metavar:當(dāng)ArgumentParser生成幫助消息時(shí),它需要某種方式來(lái)引用每個(gè)預(yù)期的參數(shù)。默認(rèn)情況下,ArgumentParser對(duì)象使用dest值作為每個(gè)對(duì)象的"name"。默認(rèn)情況下,對(duì)于位置參數(shù)action,直接使用dest值,對(duì)于可選參數(shù)action,dest值是大寫(xiě)的。可以使用metavar來(lái)指定一個(gè)替代名稱。
parser.add_argument('--foo')
parser.add_argument('--bar', metavar='XXX')
args = parser.parse_args()
(11).dest:大多數(shù)ArgumentParser操作都會(huì)添加一些值作為parse_args()返回的對(duì)象的一個(gè)屬性。此屬性的名稱由add_argument()的dest關(guān)鍵字參數(shù)確定。
3.解析參數(shù):parser.parse_args(),將參數(shù)字符串轉(zhuǎn)換為對(duì)象并將其設(shè)為命名空間的屬性,返回帶有成員的命名空間。
更多介紹參考:傳送門(mén)
GitHub
原文鏈接:https://blog.csdn.net/fengbingchun/article/details/126909875
相關(guān)推薦
- 2022-10-09 C#實(shí)現(xiàn)選擇排序_C#教程
- 2022-07-12 mongoDB替換replace某個(gè)字段的部分內(nèi)容
- 2022-02-27 微信小程序 - 子組件觸發(fā)父組件函數(shù)(triggerEvent)
- 2023-11-18 數(shù)據(jù)處理使用Python提取String、字符串中的數(shù)字
- 2022-03-30 解決Microsoft?Visual?C++?2010?Express?運(yùn)行及調(diào)試問(wèn)題_C 語(yǔ)言
- 2022-09-08 pandas庫(kù)中to_datetime()方法的使用解析_python
- 2022-05-10 bean基于xml文件
- 2022-05-03 Python?PyQt5學(xué)習(xí)之自定義信號(hào)_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支