轉(zhuǎn)自http://blog.csdn.net/itlance_ouyang/article/details/52489674
argparse模塊使得編寫(xiě)用戶(hù)友好的命令行接口非常容易掂碱。程序只需定義好它要求的參數(shù)怜姿,然后argparse將負(fù)責(zé)如何從sys.srgv中解析出這些參數(shù)。Argparse模塊還會(huì)自動(dòng)生成幫助和使用信息并且當(dāng)用戶(hù)付給程序非法的參數(shù)時(shí)產(chǎn)生錯(cuò)誤信息疼燥。
使用argparse模塊一般需要三個(gè)步驟:
- 創(chuàng)建一個(gè)解析器
使用argparse的第一步是創(chuàng)建一個(gè)ArgumentParser對(duì)象:
parser= argparse.ArgumentParser()
ArgumentParser對(duì)象會(huì)保存把命令行解析成Python數(shù)據(jù)類(lèi)型所需要的所有信息沧卢。
- 添加參數(shù)
通過(guò)調(diào)用add_argument()方法向ArgumentParser添加程序的參數(shù)信息。通常情況下醉者,這些信息告訴ArgumentParser如何接收命令行上的字符串并將它們轉(zhuǎn)換成對(duì)象但狭。這些信息被保存下來(lái)并在調(diào)用parse_args()時(shí)用到。例如:
parser.add_argument('--name', help='username')
parser.add_argument('--pass', help='password ')
接下來(lái)撬即,調(diào)用parse_args()返回的對(duì)象將帶有兩個(gè)屬性立磁,name和pass。分別保存著用戶(hù)名與密碼剥槐。
- 解析參數(shù)
ArgumentParser通過(guò)parse_args()方法解析參數(shù)唱歧。它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換成恰當(dāng)?shù)念?lèi)型并采取恰當(dāng)?shù)膭?dòng)作粒竖。在大部分情況下颅崩,這意味著將從命令行中解析出來(lái)的屬性建立一個(gè)簡(jiǎn)單的 Namespace對(duì)象。
argments = parser.parse_args(['--name','li','--pass','si'])
在腳本中温圆,[parse_args()] 調(diào)用一般不帶參數(shù)挨摸,[ArgumentParser]將根據(jù)[sys.argv]自動(dòng)確定命令行參數(shù)。
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)
創(chuàng)建一個(gè)新的argmentParserr對(duì)象岁歉。所有的參數(shù)應(yīng)該以關(guān)鍵字參數(shù)傳遞。下面有對(duì)每個(gè)參數(shù)各自詳細(xì)的描述膝蜈,但是簡(jiǎn)短地講它們是:
prog - 程序的名字(默認(rèn):sys.argv[0])
useage - 描述程序用法的字符串(默認(rèn):從解析器的參數(shù)生成)
description - 參數(shù)幫助信息之前的文本(默認(rèn):空)
epilog- 參數(shù)幫助信息之后的文本(默認(rèn):空)
parents - ArgmentParser 對(duì)象的一個(gè)列表锅移,這些對(duì)象的參數(shù)應(yīng)該包括進(jìn)去
ormatter_class - 定制化幫助信息的類(lèi)
prefix_chars - 可選參數(shù)的前綴字符集(默認(rèn):‘-‘)
fromfile_prefix_chars - 額外的參數(shù)應(yīng)該讀取的文件的前綴字符集(默認(rèn):None)
argument_default - 參數(shù)的全局默認(rèn)值(默認(rèn):None)
conflict_handler - 解決沖突的可選參數(shù)的策略(通常沒(méi)有必要)
add_help - 給解析器添加-h/–help 選項(xiàng)(默認(rèn):True)
add_argument() 方法
ArgumentParser.add_argument(nameor flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][,metavar][, dest])
定義應(yīng)該如何解析一個(gè)命令行參數(shù)。下面每個(gè)參數(shù)有它們自己詳細(xì)的描述饱搏,簡(jiǎn)單地講它們是:
name or flags- 選項(xiàng)字符串的名字或者列表非剃,例如foo 或者-f, --foo。
action - 在命令行遇到該參數(shù)時(shí)采取的基本動(dòng)作類(lèi)型推沸。
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)換成的類(lèi)型肺素。
choices - 參數(shù)可允許的值的一個(gè)容器。
required - 該命令行選項(xiàng)是否可以省略(只針對(duì)可選參數(shù))宇驾。
help - 參數(shù)的簡(jiǎn)短描述倍靡。
metavar - 參數(shù)在幫助信息中的名字。
dest - 給parse_args()返回的對(duì)象要添加的屬性名稱(chēng)课舍。
參考鏈接:
getopt英文類(lèi)庫(kù):https://docs.python.org/2/library/getopt.html
argparse英文類(lèi)庫(kù):https://docs.python.org/2/library/argparse.html