Python命令行解析工具argparse模塊
argparse模塊簡(jiǎn)介
argparse模塊是一個(gè)python標(biāo)準(zhǔn)庫(kù),它主要用于對(duì)用戶從客戶端輸入的命令進(jìn)行解析,這使得編寫用戶友好的命令行接口變得非常容易。
程序只需要定義好用戶可以從終端可以輸入哪些參數(shù),以及參數(shù)對(duì)應(yīng)的含義、數(shù)據(jù)類型即可,然后argparse將負(fù)責(zé)從sys.argv中解析出這些參數(shù)。argparse模塊還會(huì)自動(dòng)生成幫助信息和使用信息并且當(dāng)用戶賦給程序非法的參數(shù)的時(shí)候會(huì)出現(xiàn)友好的錯(cuò)誤提示信息。
使用方法
(1)導(dǎo)入argparse模塊
(2)創(chuàng)建一個(gè)解析器對(duì)象
(3)使用對(duì)象內(nèi)置的add_argument()方法添加需要關(guān)注的命令參數(shù)和選項(xiàng)
(4)之后調(diào)用parse_args()方法解析命令即可
示例:
import argparse #導(dǎo)入argparse該模塊; parser = argparse.ArgumentParser() #創(chuàng)建一個(gè)解析器對(duì)象 parser.add_argument() #添加令行參數(shù)和選項(xiàng),每一個(gè)add_argument方法對(duì)應(yīng)一個(gè)參數(shù)或選項(xiàng); args=parser.parse_args() #調(diào)用parse_args()方法進(jìn)行解析,解析成功之后即可使用
ArgumentParser對(duì)象介紹
class argparse.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ù)說(shuō)明:
參數(shù) | 描述 |
prog | 程序的名字(默認(rèn):sys.argv[0]) |
usage | 描述程序用法的字符串(默認(rèn):從解析器的參數(shù)生成) |
description | 參數(shù)幫助信息之前的文本(默認(rèn):空) |
epilog | 參數(shù)幫助信息之后的文本(默認(rèn):空) |
parents | ArgumentParser 對(duì)象的一個(gè)列表,這些對(duì)象的參數(shù)應(yīng)該包括進(jìn)去 |
formatter_class | 定制化幫助信息的類 |
prefix_chars | 可選參數(shù)的前綴字符集(默認(rèn):‘-‘) |
fromfile_prefix_chars | 額外的參數(shù)應(yīng)該讀取的文件的前綴字符集(默 |
argument_default | 參數(shù)的全局默認(rèn)值(默認(rèn):None) |
conflict_handler | 解決沖突的可選參數(shù)的策略(通常沒(méi)有必要) |
add_help | 給解析器添加-h/–help 選項(xiàng)(默認(rèn):True) |
add_argument函數(shù)簡(jiǎn)介
ArgumentParser.add_argument( name or flags... [, action] [, nargs] [, const] [, default] [, type] [, choices] [, required] [, help] [, metavar] [, dest])
參數(shù)說(shuō)明
參數(shù) | 描述 |
name or flags | 選項(xiàng)字符串的名字或者列表,例如foo 或者-f, –foo |
action | 在命令行遇到該參數(shù)時(shí)采取的基本動(dòng)作類型。 |
nargs | 應(yīng)該讀取的命令行參數(shù)數(shù)目。 |
const | 某些action和nargs選項(xiàng)要求的常數(shù)值。 |
default | 如果命令行中沒(méi)有出現(xiàn)該參數(shù)時(shí)的默認(rèn)值。 |
type | 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型。 |
choices | 參數(shù)可允許的值的一個(gè)容器。 |
required - 該命令行選項(xiàng)是否可以省略(只針對(duì)可選參數(shù))。 | |
help | 參數(shù)的簡(jiǎn)短描述。 |
metavar | 參數(shù)在幫助信息中的名字。 |
dest | 給parse_args()返回的對(duì)象要添加的屬性名稱。 |
其中“type”、“help”、“action”、“default”、“name ”、“dest”使用最為頻繁
實(shí)戰(zhàn)演示
(1)可選參數(shù)
代碼如下:
import argparse parser=argparse.ArgumentParser() parser.add_argument("-display",help="display the message!") args=parser.parse_args() if args.display: print "Display is trun on!"
運(yùn)行結(jié)果:
注:可選參數(shù)可以在add_argment("這里如果加上“-”,則說(shuō)明是可選的,否則是必須的")定義
(2)短選項(xiàng)
有時(shí)候?qū)懸粋€(gè)匹配項(xiàng)的時(shí)候還需要寫全拼,實(shí)在是有些麻煩,在Linux中大多數(shù)的交互命令都有簡(jiǎn)寫,那么我們也可以來(lái)進(jìn)行設(shè)置短選項(xiàng)
代碼如下:
import argparse parser=argparse.ArgumentParser() parser.add_argument("-d","--display",help="display the message!",action="store_true") args=parser.parse_args() if args.display: print "Display is trun on!"
(3)結(jié)合位置參數(shù)與可選參數(shù)
代碼如下:
import argparse parser = argparse.ArgumentParser() parser.add_argument("square", type=int, help="display a square of a given number") parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity") args = parser.parse_args() answer = args.square**2 if args.verbose: print "the square of {} equals {}".format(args.square, answer) else: print answer
運(yùn)行結(jié)果如下:
到此這篇關(guān)于Python命令行解析工具argparse模塊的文章就介紹到這了,更多相關(guān)Python的argparse模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯(cuò)誤
在Python編程中,處理文件是常見(jiàn)的任務(wù)之一,但偶爾也會(huì)遇到各種錯(cuò)誤,包括IOError,盡管Python?3.x中IOError已被OSError和FileNotFoundError等更具體的異常所取代,由于[Errno?0]不直接指向具體的錯(cuò)誤類型,我們將討論一系列可能導(dǎo)致IOError的常見(jiàn)情況,需要的朋友可以參考下2024-07-07python numpy.ndarray中如何將數(shù)據(jù)轉(zhuǎn)為int型
這篇文章主要介紹了python numpy.ndarray中如何將數(shù)據(jù)轉(zhuǎn)為int型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之樹(shù)回歸詳解
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之樹(shù)回歸的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Jupyter Notebook遠(yuǎn)程登錄及密碼設(shè)置操作
今天小編就為大家分享一篇Jupyter Notebook遠(yuǎn)程登錄及密碼設(shè)置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python抓取網(wǎng)頁(yè)時(shí)字符集轉(zhuǎn)換問(wèn)題處理方案分享
python學(xué)習(xí)過(guò)程中發(fā)現(xiàn)英文不好學(xué)起來(lái)挺困難的,其中小弟就遇到一個(gè)十分蛋疼的問(wèn)題,百度了半天就沒(méi)找到解決辦法~囧~摸索了半天自己解決了,記錄下來(lái)與君共勉。2014-06-06對(duì)Keras自帶Loss Function的深入研究
這篇文章主要介紹了對(duì)Keras自帶Loss Function的深入研究,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05