Python Argparse模块
argparse模塊
在Python中,argparse模塊是標(biāo)準(zhǔn)庫(kù)中用來(lái)解析命令行參數(shù)的模塊,用來(lái)替代已經(jīng)過(guò)時(shí)的optparse模塊。argparse模塊能夠根據(jù)程序中的定義從sys.argv中解析出來(lái)這些參數(shù),并自動(dòng)生成幫助和使用信息。
ArgumentParse解析器
使用argparse解析命令行參數(shù)時(shí),首先需要?jiǎng)?chuàng)建一個(gè)解析器:
import argparseparser = argparse.ArgumentParser()ArgumentParser類的初始化函數(shù)有多個(gè)參數(shù),其中比較常用的是description,它是程序的描述信息,即幫助信息前面的文字。
添加參數(shù)選項(xiàng)
為應(yīng)用程序添加參數(shù)選項(xiàng)需要使用ArgrmentParser對(duì)象的add_argument方法,該方法的格式如下:
add_argument(name or flag...[, action ] [, nargs ] [, const ] [, default ] [, type ] [, choices ] [, required ] [,help ] [,metavar ] [, dest ]各個(gè)參數(shù)含義如下:
- name/flags:參數(shù)的名字
- action:遇到參數(shù)時(shí)的動(dòng)作,默認(rèn)值時(shí)store。
- nargs:參數(shù)的個(gè)數(shù),可以時(shí)具體的數(shù)字,或者是”+“號(hào)或者”*“號(hào)。其中”*”號(hào)表示0或者多個(gè)參數(shù),“+”號(hào)表示1個(gè)或多個(gè)參數(shù)。
- const action 和 nargs:需要的常量值
- default:不指定參數(shù)時(shí)的默認(rèn)值
- type:參數(shù)的類型
- choices:參數(shù)允許的值
- required:可選參數(shù)是否可以省略
- help:參數(shù)的幫助信息
- metavar:在usage說(shuō)明中的參數(shù)名稱
- dest:解析后的參數(shù)名稱
action內(nèi)置的6種動(dòng)作:
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)于程序的版本信息,然后退出解析參數(shù)
解析命令行參數(shù)需要用到AgrumentParser對(duì)象的parse_args方法,該方法返回一個(gè)NameSpace對(duì)象。獲取對(duì)象后,參數(shù)值可以通過(guò)屬性的方式進(jìn)行訪問(wèn)。由于指定了默認(rèn)值,那么直接運(yùn)行,也不會(huì)報(bào)錯(cuò)
parser.add_argument('-host',action='store',dest='server',default='localhost',help='connect to host') parser.add_argument('-p',action='store',dest='port',default='3306',help='the port to host') parser.parse_args()# parser.parse_args() 存儲(chǔ)的值 Namespace(port='3306', server='localhost')存貯布爾類型的值的時(shí)候action,存儲(chǔ)為store_true類型。
使用argparse進(jìn)行參數(shù)解析還有另一個(gè)好處,它能夠根據(jù)我們的選項(xiàng)定義自動(dòng)生成幫助信息。(自動(dòng)追加-h選項(xiàng),打印幫助信息)
模仿MySQL客戶端的命令參數(shù)
import argparseparser = argparse.ArgumentParser(description='A Python-MySQL client')def getparser():parser.add_argument('--host',action='store',dest='host',required=True,help='connect to host')parser.add_argument('-u','--username',action='store',dest='user',required=True,help='user for login')parser.add_argument('-p','--password',action='store',dest='password',required=True,help='password to use when user connecting to server')parser.add_argument('-P','--port',action='store',dest='port',default=3306,type=int,help='port number to use for connection or 3306 or default')parser.add_argument('-v','--version',action='version',version='%(prog)s 0.1')return parser.parse_args()def main():parser = getparser()conn_args = dict(host=parser.host,username=parser.user,password=parser.password,port=parser.port)print(conn_args)if __name__ == '__main__':main()PS:如果 port參數(shù)可以指定多個(gè)參數(shù),那么可以添加 nargs='+'即可。
?
?
更詳細(xì)的使用方法參考,戳我
轉(zhuǎn)載于:https://www.cnblogs.com/zhichaoma/p/8001451.html
總結(jié)
以上是生活随笔為你收集整理的Python Argparse模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 云计算网络基础第八天
- 下一篇: Math.random()