Python命令行解析器argparse詳解
第1章 argparse簡介
1.1 解析
argparse 模塊是 Python 內置的一個用於命令項選項與參數解析的模塊,argparse 模塊可以讓人輕松編寫用戶友好的命令行接口。
argparse能夠幫助程序員為模型定義參數、通過sys.argv 解析命令行參數。模塊還會自動生成幫助和使用手冊,並在用戶給程序傳入無效參數時報出錯誤信息。
1.2 argparse定義三步驟
(1)創建一個命令行解析器對象——創建 ArgumentParser() 對象
(2)給解析器添加命令行參數 ——調用add_argument() 方法添加參數
(3)解析命令行的參數 ——使用 parse_args() 解析添加的參數
1.3 代碼示例
# 導入庫 import argparse # 1. 定義命令行解析器對象 parser = argparse.ArgumentParser(description='test') # 2. 添加命令行參數 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. 從命令行中結構化解析參數 args = parser.parse_args() print(args.sparse) print(args.seed) print(args.epochs)
第2章 參數詳解
2.1 創建一個命令行解析器對象:ArgumentParser()
使用 argparse 的第一步是創建一個 ArgumentParser 對象:
parser = argparse.ArgumentParser(description='test')
ArgumentParser 實例化對象將包含把命令行解析成 Python 數據類型所需的全部信息,
(1)描述description
大多數對 ArgumentParser 構造方法的調用都會使用 description= 關鍵字參數。
這個參數簡要描述這個程度做什麼以及怎麼做。
在幫助消息中,這個描述會顯示在命令行用法字符串和各種參數的幫助消息之間。
2.2 為命令行添加參數: add_argument() 方法
(1)添加命令行參數的案例
給一個 ArgumentParser 添加程序參數信息,是通過調用 add_argument() 方法完成的。
通常,這些調用指定 ArgumentParser 如何獲取命令行字符串並將其轉換為對象。
這些信息在 parse_args() 調用時被存儲在ArgumentParser實例化對象中,以供後續使用。
例如:
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() 方法定義如何解析命令行參數的呢?
(2)add_argument() 方法定義如何解析命令行參數
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][,
choices][, required][, help][, metavar][, dest])
每個參數解釋如下:
name or flags – 普通參數或flag參數選項參數的名稱或標簽,例如 foo 或者 -f, –foo。Flag參數不需要指定參數值,隻需要帶有參數名即可。
action – 命令行遇到flags參數時的動作。有兩個常見的動作,store_true:設定flag參數為true;store_false:設定flag參數為False。
nargs – 應該讀取的命令行參數個數,可以是具體的數字,或者是?號,當不指定值時對於 Positional argument 使用 default,對於 Optional argument 使用 const;或者是 * 號,表示 0 或多個參數;或者是 + 號表示 1 或多個參數。
default – 不指定參數時該參數的默認值。
type – 命令行參數應該被轉換成的數據類型。
required – 是否為必選參數或可選參數。
help – 參數的幫助信息,當指定為 argparse.SUPPRESS 時表示不顯示該參數的幫助信息.
metavar – 在 usage 說明中的參數名稱,對於必選參數,默認就是參數名稱,對於可選參數默認是全大寫的參數名稱。
dest – 解析後的參數名稱,默認情況下,對於可選參數選取最長的名稱,中劃線轉換為下劃線.
choices – 參數可允許的值的一個容器。
const – action 和 nargs 所需要的常量值。
store_const,表示賦值為const;
append,將遇到的值存儲成列表,也就是如果參數重復則會保存多個值;
append_const,將參數規范中定義的一個值保存到一個列表;
count,存儲遇到的次數;此外,也可以繼承 argparse.Action 自定義參數解析;
2.3 解析命令行的參數:parse_args()
ArgumentParser對象通過 parse_args() 方法解析命令行的參數。
它將檢查命令行中每個參數,轉換為適當的數據類型,然後調用相應的操作,並把參數結構化後存放在對象args中。
args = parser.parse_args()
在腳本中,通常 parse_args() 會被不帶參數調用,而 ArgumentParser 將自動從 sys.argv 中確定命令行參數。
2.4 命令行參數的輸入
xxx –sparse –seed 0 –epochs 1000
其中,–seed和–epochs為普通參數,需要指定具體的數據。
–sparse為flag參數,不需要指定具體的值,指定該參數名後的具體數值,取決於其action的定義。
如果action = store_true時,–sparse表明參數值設定為true
如果action = store_false時,–sparse表明參數值設定為false
2.5 命令行參數的使用
print(args.sparse) print(args.seed) print(args.epochs)
總結
到此這篇關於Python命令行解析器argparse詳解的文章就介紹到這瞭,更多相關Python令行解析器argparse內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python Parser的用法
- Python argparse 解析命令行參數模塊詳情
- python深度學習標準庫使用argparse調參
- python argparse模塊傳參用法實例
- python argparse命令行參數解析(推薦)