python argparse模塊介紹

argparse 是python自帶的命令行參數解析包,可以用來方便地讀取命令行參數。argparse 模塊還會自動生成幫助和使用手冊,並在用戶給程序傳入無效參數時報出錯誤信息。

使用流程

主要有三個步驟:

  • 創建 ArgumentParser() 對象
  • 調用 add_argument() 方法添加參數
  • 使用 parse_args() 解析添加的參數
創建 ArgumentParser() 對象

語法:

parser = argparse.ArgumentParser()

一般這樣即可,全部可選參數如下。

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, allow_abbrev=True)

各個參數的作用如下:

  • prog - 程序的名稱(默認:sys.argv[0])
  • usage - 描述程序用途的字符串(默認值:從添加到解析器的參數生成)
  • description - 在參數幫助文檔之前顯示的文本(默認值:無)
  • epilog - 在參數幫助文檔之後顯示的文本(默認值:無)
  • parents - 一個 ArgumentParser 對象的列表,它們的參數也應包含在內
  • formatter_class - 用於自定義幫助文檔輸出格式的類
  • prefix_chars - 可選參數的前綴字符集合(默認值:’-’)
  • fromfile_prefix_chars - 當需要從文件中讀取其他參數時,用於標識文件名的前綴字符集合(默認值:None)
  • argument_default - 參數的全局默認值(默認值: None)
  • conflict_handler - 解決衝突選項的策略(通常是不必要的)
  • add_help - 爲解析器添加一個 -h/–help 選項(默認值: True)
  • allow_abbrev - 如果縮寫是無歧義的,則允許縮寫長選項 (默認值:True)

通常會使用usage和description參數,以在使用時獲取幫助信息。

調用 add_argument() 方法添加參數

ArgumentParser.add_argument(name or flags…[, action][, nargs][,const][, default][, type][, choices][, required][, help][, metavar][,dest])

各個參數作用如下:

  • name or flags - 一個命名或者一個選項字符串的列表,例如 foo 或 -f, --foo。
  • action - 當參數在命令行中出現時使用的動作基本類型。
  • nargs - 命令行參數應當消耗的數目。
  • const - 被一些 action 和 nargs 選擇所需求的常數。
  • default - 當參數未在命令行中出現時使用的值。
  • type - 命令行參數應當被轉換成的類型。
  • choices - 可用的參數的容器。
  • required - 此命令行選項是否可省略 (僅選項可用)。
  • help - 一個此選項作用的簡單描述。
  • metavar - 在使用方法消息中使用的參數值示例。
  • dest - 被添加到 parse_args() 所返回對象上的屬性名。

分爲添加位置參數和可選參數
添加位置參數聲明的參數名前綴不帶-或–,按照順序進行解析,在命令中必須出現,否則報錯,命令通常爲:

parser.add_argument("a")
parser.add_argument("b")
parser.add_argument("c")

添加可選參數聲明的參數名前綴帶-或–,前綴是-的爲短參數,前綴是–是長參數,兩者可以都有,也可以只有一個,短參數和長參數效果一樣。可選參數的值接在位置參數的後面,不影響位置參數的解析順序。
以深度學習訓練中經常出現的爲例:

parser.add_argument('--batch-size', type=int, default=64, metavar='N',
                        help='input batch size for training (default: 64)')
parser.add_argument('--momentum', type=float, default=0.5, metavar='M',
                        help='SGD momentum (default: 0.5)')
parser.add_argument('--no-cuda', action='store_true', default=False,
                        help='disables CUDA training')
parser.add_argument('--save-model', action='store_true', default=False,
                        help='For Saving the current Model')

其中action參數的’store_true’指的是:觸發action時爲真,不觸發則爲假。即儲存了一個bool變量,默認爲false,觸發不用賦值即變爲true。
type:指定參數類別,默認是str,傳入其他類型要定義。
help:一些提示信息。
default:默認值。
metavar:在 usage 說明中的參數名稱,對於必選參數默認就是參數名稱,對於可選參數默認是全大寫的參數名稱。

使用 parse_args() 解析添加的參數

命令:

args = parser.parse_args()

這樣args就有了參數屬性,可以用args了。

示例

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument('-a', type=int,help='input a int')
args = parser.parse_args()
print(args.a)

更多內容可參考:
argparse

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章