Python argparse 解析命令行參數(shù)模塊詳情
一、預(yù)備知識(shí)
argparse
是python
用于解析命令行參數(shù)和選項(xiàng)的標(biāo)準(zhǔn)模塊,用于代替已經(jīng)過(guò)時(shí)的optparse
模塊。argparse
模塊的作用是用于解析命令行參數(shù)。
1、安裝
argsparse
是python
的命令行解析的標(biāo)準(zhǔn)模塊,內(nèi)置于python
,不需要安裝。使用的時(shí)候直接:
import argparse
2、使用的一般步驟
這個(gè)模塊使用起來(lái)十分簡(jiǎn)單,就類似于 造(買(mǎi))個(gè)冰箱→在冰箱里面放點(diǎn)食材→需要的時(shí)候把食材拿出來(lái)做出美味的食物。
它的使用分為三步:
# 1.創(chuàng)建一個(gè)解析對(duì)象; parser = argparse.ArgumentParser() # 2.然后向該對(duì)象中添加你要關(guān)注的命令行參數(shù)和選項(xiàng), # 每一個(gè) add_argument 方法對(duì)應(yīng)一個(gè)你要關(guān)注的參數(shù)或選項(xiàng); parser.add_argument() # 3. 最后調(diào)用 parse_args()方法進(jìn)行解析; parser.parse_args()
另外,關(guān)于參數(shù)的書(shū)寫(xiě)習(xí)慣,有如下幾種:
- 空格分開(kāi),最常用,比如
parser.parse_args('-x X'.split())
- 長(zhǎng)選項(xiàng)用
=
分開(kāi) ( “長(zhǎng)”選項(xiàng)名字,即選項(xiàng)的名字多于一個(gè)字符),比如parser.parse_args('--foo=FOO'.split())
- ???????短選項(xiàng)可以寫(xiě)在一起,比如
parser.parse_args('-xX')
二、實(shí)操筆記
上面簡(jiǎn)要介紹了使用的基本步驟,下面首先詳細(xì)介紹涉及到的幾個(gè)函數(shù),然后再給一個(gè)實(shí)例。
1、函數(shù)詳解
1.1ArgumentParser
這個(gè)函數(shù)的作用就是創(chuàng)建一個(gè)解析對(duì)象(冰箱),下面是它的參數(shù)列表:
ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)
參數(shù)含義如下所示:
- prog:程序的名字,默認(rèn)為
sys.argv[0]
,用來(lái)在help
信息中描述程序的名稱。 - usage:描述程序用途的字符串
- description:
help
信息前的文字。 - epilog:
help
信息之后的信息 - add_help:設(shè)為
False
時(shí),help
信息里面不再顯示-h --help
信息。 - prefix_chars:參數(shù)前綴,默認(rèn)為
-
- ???????fromfile_prefix_chars:前綴字符,放在文件名之前
- argument_default:參數(shù)的全局默認(rèn)值。
- conflict_handler:對(duì)沖突的處理方式,默認(rèn)為返回錯(cuò)誤“error”。還有“resolve”,智能解決沖突。當(dāng)用戶給程序添加了兩個(gè)一樣的命令參數(shù)時(shí),“error”就直接報(bào)錯(cuò),提醒用戶。而“resolve”則會(huì)去掉第一次出現(xiàn)的命令參數(shù)重復(fù)的部分或者全部(可能是短命令沖突或者全都沖突)。
1.2add_argument
此函數(shù)用來(lái)指定程序需要接受的命令參數(shù),它的參數(shù)列表如下所示:
add_argument(name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest]) # 注:[] 表示可選
參數(shù)含義如下:
- name or flags:參數(shù)有兩種,可選參數(shù)和位置參數(shù)。
parse_args()
運(yùn)行時(shí),會(huì)用-
來(lái)認(rèn)證可選參數(shù),剩下的即為位置參數(shù)。位置參數(shù)必選,可選參數(shù)可選。 - action:參數(shù)動(dòng)作;
argparse
內(nèi)置6種動(dòng)作可以在解析到一個(gè)參數(shù)時(shí)進(jìn)行觸發(fā):store
保存參數(shù)值,可能會(huì)先將參數(shù)值轉(zhuǎn)換成另一個(gè)數(shù)據(jù)類型。若沒(méi)有顯式指定動(dòng)作,則默認(rèn)為該動(dòng)作。store_const
保存一個(gè)被定義為參數(shù)規(guī)格一部分的值,而不是一個(gè)來(lái)自參數(shù)解析而來(lái)的值。這通常用于實(shí)現(xiàn)非布爾值的命令行標(biāo)記。store_ture/store_false
保存相應(yīng)的布爾值。這兩個(gè)動(dòng)作被用于實(shí)現(xiàn)布爾開(kāi)關(guān)。append
將值保存到一個(gè)列表中。若參數(shù)重復(fù)出現(xiàn),則保存多個(gè)值。append_const
將一個(gè)定義在參數(shù)規(guī)格中的值保存到一個(gè)列表中。version
打印關(guān)于程序的版本信息,然后退出。count
統(tǒng)計(jì)參數(shù)出現(xiàn)的次數(shù)。 - nargs:參數(shù)的數(shù)量。值可以為整數(shù)
N
(N個(gè)),*
(任意多個(gè)),+
(一個(gè)或更多),值為?
時(shí),首先從命令行獲得參數(shù),若沒(méi)有則從const
獲得,然后從default
獲得: - dest:參數(shù)值就保存為
parse_args()
返回的命名空間對(duì)象中名為該dest
參數(shù)值的一個(gè)屬性。如果提供dest,例如dest="a"
,那么可以通過(guò)args.a
訪問(wèn)該參數(shù) - default:設(shè)置參數(shù)的默認(rèn)值
- type:把從命令行輸入的結(jié)果轉(zhuǎn)成設(shè)置的類型
- choice:允許的參數(shù)值
- required:是否必選
- desk:可作為參數(shù)名
- help:參數(shù)命令的介紹
2、調(diào)用實(shí)例
下面給個(gè)簡(jiǎn)單的示例,只是說(shuō)明如何調(diào)用而已,后續(xù)可根據(jù)上面對(duì)函數(shù)的詳細(xì)解釋來(lái)使其更實(shí)用智能。
import argparse parser = argparse.ArgumentParser(description ="This is a Test!") parser.add_argument("type",choices=['scheduler','tool'], help="make application type") parser.add_argument('-c',dest='configurefile',help="configure file") parser.print_help() args = parser.parse_args(["tool","-c","a.ini"]) print(args.type) print(args.configurefile) # --------------output------------------ usage: draft.py [-h] [-c CONFIGUREFILE] {scheduler,tool} This is a Test! positional arguments: {scheduler,tool} make application type optional arguments: -h, --help show this help message and exit -c CONFIGUREFILE configure file tool a.ini
這個(gè)簡(jiǎn)單的例子就,就創(chuàng)建了一個(gè)argparse對(duì)象,然后加了兩個(gè)參數(shù)(不算-h),一個(gè)是必選參數(shù)
tool
,另一個(gè)是可選參數(shù)-c
,然后使用dest
將其轉(zhuǎn)換為參數(shù)的一個(gè)屬性。
ps:其實(shí)一開(kāi)始筆者遇到了一個(gè)問(wèn)題,一開(kāi)始筆者在必選參數(shù)前加了type
,其實(shí)是不用的,對(duì)于必選參數(shù)直接給值即可。
另外,當(dāng)有多個(gè)必選參數(shù)時(shí),需要注意必選參數(shù)的順序一定要和加參數(shù)的順序保持一致。
可選參數(shù)和必選參數(shù)可以交換順序,只需保持可選參數(shù)與值不要分開(kāi),必選參數(shù)的相對(duì)順序與加參數(shù)的順序保持一致即可!
到此這篇關(guān)于Python argparse 解析命令行參數(shù)模塊詳情的文章就介紹到這了,更多相關(guān)Python argparse內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過(guò)Python的filestools庫(kù)給圖片添加全圖水印的示例詳解
這篇文章主要介紹了通過(guò)Python的filestools庫(kù)給圖片添加全圖水印,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04Python DataFrame.groupby()聚合函數(shù),分組級(jí)運(yùn)算
python的pandas包提供的數(shù)據(jù)聚合與分組運(yùn)算功能很強(qiáng)大,也很靈活,本文就帶領(lǐng)大家一起來(lái)了解groupby技術(shù),感興趣的朋友跟隨小編一起來(lái)看下2018-09-09numpy中hstack vstack stack concatenate函數(shù)示例詳解
這篇文章主要為大家介紹了numpy中hstack vstack stack concatenate函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Python3通過(guò)Luhn算法快速驗(yàn)證信用卡卡號(hào)的方法
這篇文章主要介紹了Python3通過(guò)Luhn算法快速驗(yàn)證信用卡卡號(hào)的方法,涉及Python中Luhn算法的使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05python如何爬取動(dòng)態(tài)網(wǎng)站
在本篇內(nèi)容里小編給各位分享了關(guān)于python如何爬取動(dòng)態(tài)網(wǎng)站的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考下。2020-09-09Python數(shù)據(jù)分析之?Pandas?Dataframe修改和刪除及查詢操作
這篇文章主要介紹了Python數(shù)據(jù)分析之?Pandas?Dataframe修改和刪除及查詢操作的相關(guān)資料,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05python如何實(shí)現(xiàn)遠(yuǎn)程控制電腦(結(jié)合微信)
這篇文章主要介紹了python如何實(shí)現(xiàn)遠(yuǎn)程控制電腦,利用python設(shè)計(jì)了一個(gè)程序來(lái)實(shí)現(xiàn)自由管控,感興趣的小伙伴們可以參考一下2015-12-12