在python中,經(jīng)常會遇到執(zhí)行py腳本時傳參的場景宝惰,而argparse就是一個應(yīng)用非常廣泛的傳參方式舔稀,下面對如何使用argparse做一個簡單的介紹
代碼實例
下面是代碼中的定義方式,假設(shè)下面代碼對應(yīng)的py文件為demo.py
# 導(dǎo)入
import argparse
# 創(chuàng)建
parser = argparse.ArgumentParser(description="你的描述")
# 添加參數(shù)
parser.add_argument('--backbone', type=str, default='mobilenet',
choices=['resnet', 'xception', 'drn', 'mobilenet'],
help='backbone name (default: resnet)')
parser.add_argument('--no-cuda', action='store_true', default=
False, help='disables CUDA training')
# 使用
args = parser.parse_args()
print(args.backbone)
print(args.no-cuda)
說明
- --backbone : 參數(shù)名稱掌测,任意自定義名稱即可
- type : 參數(shù)類型
- default : 默認(rèn)值
- choices : 可選值
- help : 參數(shù)說明
- action : 一個有意思的參數(shù)設(shè)置方式, 類似于開關(guān)产园,一般針對bool類型參數(shù)汞斧,可選設(shè)為 'store_true' 或 'store_false', 若設(shè)為'store_true',那么只要設(shè)定什燕,就代表為True粘勒,不設(shè)定就是默認(rèn)值
應(yīng)用實例
既然代碼中已經(jīng)定義好了,那么在運(yùn)行py腳本時如何使用這些參數(shù)呢?
case1: python demo.py --backbone nihao
此時會給backbone參數(shù)賦值為nihao, 而no-cuda設(shè)置屎即,將會使用默認(rèn)值False
case2 : python demo.py --no-cuda
此時對于no-cuda這個參數(shù)庙睡,將會賦值為True,因為在腳本中添加該參數(shù)時action='store_true', 只要設(shè)置技俐,就賦值True乘陪,而且,不能顯式地為其設(shè)置其他值雕擂,否則出錯
錯誤實例:
python demo.py --no-cuda True