溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python命令行解析器argparse怎么使用

發(fā)布時(shí)間:2022-01-04 17:11:11 來源:億速云 閱讀:140 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python命令行解析器argparse怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python命令行解析器argparse怎么使用”吧!

    第1章 argparse簡(jiǎn)介

    1.1 解析

    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.2 argparse定義三步驟

    (1)創(chuàng)建一個(gè)命令行解析器對(duì)象——創(chuàng)建 ArgumentParser() 對(duì)象

    (2)給解析器添加命令行參數(shù)   ——調(diào)用add_argument() 方法添加參數(shù)

    (3)解析命令行的參數(shù)              ——使用 parse_args() 解析添加的參數(shù)

    1.3  代碼示例

    # 導(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)

    第2章 參數(shù)詳解

    2.1 創(chuàng)建一個(gè)命令行解析器對(duì)象:ArgumentParser() 

    使用 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ù)的幫助消息之間。

    2.2 為命令行添加參數(shù): add_argument() 方法

    (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ù)解析;

    2.3 解析命令行的參數(shù):parse_args() 

    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ù)。

    2.4 命令行參數(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

    2.5 命令行參數(shù)的使用

    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)注!

    向AI問一下細(xì)節(jié)

    免責(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)容。

    AI