python之Argparse模塊
argparse 模塊可以輕松編寫用戶友好的命令行接口。程序定義它需要的參數,然後 argparse 將弄清如何從 sys.argv 解析出那些參數。 argparse 模塊還會自動生成幫助和使用手冊,並在用戶給程序傳入無效參數時報出錯誤信息。
argparse簡單使用流程
主要有三個步驟:
- 創建
ArgumentParser()
對象 - 調用
add_argument()
方法添加參數 - 使用
parse_args()
解析添加的參數
創建解析器對象
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)
詳細解釋參考官方文檔:https://docs.python.org/zh-cn/3/library/argparse.html#argparse.ArgumentParser
添加參數
分為添加位置參數-positional arguments和可選參數-optional arguments
添加位置參數聲明的參數名前綴不帶-或--,按照順序進行解析,在命令中必須出現,否則報錯,命令通常為:
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 說明中的參數名稱,對於必選參數默認就是參數名稱,對於可選參數默認是全大寫的參數名稱.
其它詳細用法文檔介紹:https://docs.python.org/zh-cn/3/library/argparse.html#argparse.ArgumentParser.add_argument
解析參數
args = parser.parse_args()
這樣args就有了參數屬性,可以用args了。
示例:
# 導入包
import argparse
# 創建解析器
parser = argparse.ArgumentParser()
#添加位置參數(positional arguments)
parser.add_argument('-a', type=int,help='input a int')
args = parser.parse_args()
print(args.a)
python之Argparse模塊