了解學(xué)習(xí)argparse模塊

轉(zhuǎn)自http://blog.csdn.net/itlance_ouyang/article/details/52489674

argparse模塊使得編寫用戶友好的命令行接口非常容易。程序只需定義好它要求的參數(shù),然后argparse將負(fù)責(zé)如何從sys.srgv中解析出這些參數(shù)。Argparse模塊還會(huì)自動(dòng)生成幫助和使用信息并且當(dāng)用戶付給程序非法的參數(shù)時(shí)產(chǎn)生錯(cuò)誤信息。

使用argparse模塊一般需要三個(gè)步驟:

  1. 創(chuàng)建一個(gè)解析器
    使用argparse的第一步是創(chuàng)建一個(gè)ArgumentParser對(duì)象:

parser= argparse.ArgumentParser()

ArgumentParser對(duì)象會(huì)保存把命令行解析成Python數(shù)據(jù)類型所需要的所有信息。

  1. 添加參數(shù)
    通過調(diào)用add_argument()方法向ArgumentParser添加程序的參數(shù)信息。通常情況下,這些信息告訴ArgumentParser如何接收命令行上的字符串并將它們轉(zhuǎn)換成對(duì)象。這些信息被保存下來并在調(diào)用parse_args()時(shí)用到。例如:

parser.add_argument('--name', help='username')
parser.add_argument('--pass', help='password ')

接下來,調(diào)用parse_args()返回的對(duì)象將帶有兩個(gè)屬性,name和pass。分別保存著用戶名與密碼。

  1. 解析參數(shù)
    ArgumentParser通過parse_args()方法解析參數(shù)。它將檢查命令行,把每個(gè)參數(shù)轉(zhuǎn)換成恰當(dāng)?shù)念愋筒⒉扇∏‘?dāng)?shù)膭?dòng)作。在大部分情況下,這意味著將從命令行中解析出來的屬性建立一個(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 - 定制化幫助信息的類
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ù)的策略(通常沒有必要)
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)作類型。
nargs - 應(yīng)該讀取的命令行參數(shù)數(shù)目。
const- 某些action和nargs選項(xiàng)要求的常數(shù)值。
default - 如果命令行中沒有出現(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ì)象要添加的屬性名稱。

參考鏈接:
getopt英文類庫(kù):https://docs.python.org/2/library/getopt.html
argparse英文類庫(kù):https://docs.python.org/2/library/argparse.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容