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!

推薦閱讀: