您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python命令行解析器argparse怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python命令行解析器argparse怎么使用”吧!
argparse 模塊是 Python 內(nèi)置的一個(gè)用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,argparse 模塊可以讓人輕松編寫用戶友好的命令行接口。
argparse能夠幫助程序員為模型定義參數(shù)、通過sys.argv 解析命令行參數(shù)。模塊還會(huì)自動(dòng)生成幫助和使用手冊(cè),并在用戶給程序傳入無效參數(shù)時(shí)報(bào)出錯(cuò)誤信息。
(1)創(chuàng)建一個(gè)命令行解析器對(duì)象——創(chuàng)建 ArgumentParser() 對(duì)象
(2)給解析器添加命令行參數(shù) ——調(diào)用add_argument() 方法添加參數(shù)
(3)解析命令行的參數(shù) ——使用 parse_args() 解析添加的參數(shù)
# 導(dǎo)入庫 import argparse # 1. 定義命令行解析器對(duì)象 parser = argparse.ArgumentParser(description='test') # 2. 添加命令行參數(shù) parser.add_argument('--sparse', action='store_true', default=False, help='GAT with sparse version or not.') parser.add_argument('--seed', type=int, default=72, help='Random seed.') parser.add_argument('--epochs', type=int, default=10000, help='Number of epochs to train.') # 3. 從命令行中結(jié)構(gòu)化解析參數(shù) args = parser.parse_args() print(args.sparse) print(args.seed) print(args.epochs)
使用 argparse 的第一步是創(chuàng)建一個(gè) ArgumentParser 對(duì)象:
parser = argparse.ArgumentParser(description='test')
ArgumentParser 實(shí)例化對(duì)象將包含把命令行解析成 Python 數(shù)據(jù)類型所需的全部信息,
(1)描述description
大多數(shù)對(duì) ArgumentParser 構(gòu)造方法的調(diào)用都會(huì)使用 description= 關(guān)鍵字參數(shù)。
這個(gè)參數(shù)簡(jiǎn)要描述這個(gè)程度做什么以及怎么做。
在幫助消息中,這個(gè)描述會(huì)顯示在命令行用法字符串和各種參數(shù)的幫助消息之間。
(1)添加命令行參數(shù)的案例
給一個(gè) ArgumentParser 添加程序參數(shù)信息,是通過調(diào)用 add_argument() 方法完成的。
通常,這些調(diào)用指定 ArgumentParser 如何獲取命令行字符串并將其轉(zhuǎn)換為對(duì)象。
這些信息在 parse_args() 調(diào)用時(shí)被存儲(chǔ)在ArgumentParser實(shí)例化對(duì)象中,以供后續(xù)使用。
例如:
parser.add_argument('--sparse', action='store_true', default=False, help='GAT with sparse version or not.') parser.add_argument('--seed', type=int, default=72, help='Random seed.') parser.add_argument('--epochs', type=int, default=10000, help='Number of epochs to train.')
add_argument() 方法定義如何解析命令行參數(shù)的呢?
(2)add_argument() 方法定義如何解析命令行參數(shù)
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][,
choices][, required][, help][, metavar][, dest])
每個(gè)參數(shù)解釋如下:
name or flags - 普通參數(shù)或flag參數(shù)選項(xiàng)參數(shù)的名稱或標(biāo)簽,例如 foo 或者 -f, --foo。Flag參數(shù)不需要指定參數(shù)值,只需要帶有參數(shù)名即可。
action - 命令行遇到flags參數(shù)時(shí)的動(dòng)作。有兩個(gè)常見的動(dòng)作,store_true:設(shè)定flag參數(shù)為true;store_false:設(shè)定flag參數(shù)為False。
nargs - 應(yīng)該讀取的命令行參數(shù)個(gè)數(shù),可以是具體的數(shù)字,或者是?號(hào),當(dāng)不指定值時(shí)對(duì)于 Positional argument 使用 default,對(duì)于 Optional argument 使用 const;或者是 * 號(hào),表示 0 或多個(gè)參數(shù);或者是 + 號(hào)表示 1 或多個(gè)參數(shù)。
default - 不指定參數(shù)時(shí)該參數(shù)的默認(rèn)值。
type - 命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的數(shù)據(jù)類型。
required - 是否為必選參數(shù)或可選參數(shù)。
help - 參數(shù)的幫助信息,當(dāng)指定為 argparse.SUPPRESS 時(shí)表示不顯示該參數(shù)的幫助信息.
metavar - 在 usage 說明中的參數(shù)名稱,對(duì)于必選參數(shù),默認(rèn)就是參數(shù)名稱,對(duì)于可選參數(shù)默認(rèn)是全大寫的參數(shù)名稱。
dest - 解析后的參數(shù)名稱,默認(rèn)情況下,對(duì)于可選參數(shù)選取最長(zhǎng)的名稱,中劃線轉(zhuǎn)換為下劃線.
choices - 參數(shù)可允許的值的一個(gè)容器。
const - action 和 nargs 所需要的常量值。
store_const,表示賦值為const;
append,將遇到的值存儲(chǔ)成列表,也就是如果參數(shù)重復(fù)則會(huì)保存多個(gè)值;
append_const,將參數(shù)規(guī)范中定義的一個(gè)值保存到一個(gè)列表;
count,存儲(chǔ)遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;
ArgumentParser對(duì)象通過 parse_args() 方法解析命令行的參數(shù)。
它將檢查命令行中每個(gè)參數(shù),轉(zhuǎn)換為適當(dāng)?shù)臄?shù)據(jù)類型,然后調(diào)用相應(yīng)的操作,并把參數(shù)結(jié)構(gòu)化后存放在對(duì)象args中。
args = parser.parse_args()
在腳本中,通常 parse_args() 會(huì)被不帶參數(shù)調(diào)用,而 ArgumentParser 將自動(dòng)從 sys.argv 中確定命令行參數(shù)。
xxx --sparse --seed 0 --epochs 1000
其中,--seed和--epochs為普通參數(shù),需要指定具體的數(shù)據(jù)。
--sparse為flag參數(shù),不需要指定具體的值,指定該參數(shù)名后的具體數(shù)值,取決于其action的定義。
如果action = store_true時(shí),--sparse表明參數(shù)值設(shè)定為true
如果action = store_false時(shí),--sparse表明參數(shù)值設(shè)定為false
print(args.sparse) print(args.seed) print(args.epochs)
感謝各位的閱讀,以上就是“Python命令行解析器argparse怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python命令行解析器argparse怎么使用這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。