python argparse 用法總結
python argparse 用法總結
深度學習中會經常用到Python的一些包,易學也容易忘記,網上很多的資源,學習後做一個簡單的筆記,方便後續查詢。
1.argparse介紹
pythonde的一個命令列解析包
2.基本用法
下面的檔案儲存為 argparse_test.py
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
執行:python argparse_test.py
無輸出和錯誤資訊
執行:python argparse_test.py --help
輸出:
執行:python argparse_test.py -v
輸出:錯誤,未定義-v引數
3.positional arguments
定位引數,修改argparse_test.py為如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args=parser.parse_args()
print(args.echo)
執行:python argparse_test.py
- 不帶引數測試,由於echo引數為空,報錯
執行:python argparse_test.py
- 列印幫助資訊,包括相關引數資訊
執行:python argparse_test.py hhhhhhh
- 正常輸入,回顯輸入的字串
4.optional arguments
可選引數
- 一種是通過一個-來指定的短引數,如-h
- 一種是通過–來指定的長引數,–help
上述兩者可以共存,也可以只使用一個:
修改上述程式碼如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v","--verbosity" ,help="increase output verbosity")
args=parser.parse_args()
if args.verbosity:
print("verbosity turned on")
執行:python argparse_test.py -v 1
執行:python argparse_test.py --verbosity 1
執行上述兩條指定都輸出:verbosity turned on
執行:python argparse_test.py -h
顯示幫助資訊
執行:python argparse_test.py -v
報錯,未指定相關引數
5.action=‘store_true’
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v","--verbosity",help="increase output verbosity",action = "store_true")
parser.parse_args()
parser.add_argument("echo")
args=parser.parse_args()
if args.verbosity:
print("verbosity turned on")
執行:python argparse_test.py -v
執行:python argparse_test.py -v 1
得到相同的結果
6.型別Type
預設引數為str,可以通過type進行型別轉換
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('x',type=int,help="the base")
args = parser.parse_args()
answer = args.x ** 2
print(answer)
7.可選值choice=[]
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v","--verbosity", type=int, choices=[0,1,2],
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity ==2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity ==1:
print("{}^2 == {}".format(args.square, answer))
else:print (answer)
8.自定義幫助資訊help
如上述程式,help=" "
9.程式用法幫助
通過argparse.ArgumentParser(description=“calculate X to the power of Y”)即可
import argparse
parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose", action="store_true")
group.add_argument("-q","--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.y
if args.quiet:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
print("{}^{} == {}".format(args.x, args.y, answer))
10.互斥引數
上述程式中定義互斥引數
group = parser.add_mutually_exclusive_group()
group.add_argument("-v","--verbose", action="store_true")
group.add_argument("-q","--quiet", action="store_true")
第1行定義互斥組,第2,3行在互斥組中添加了-v -q兩個引數組。
-q和-v是互斥的兩個引數,同時出現時回出錯
11.預設引數
default引數設定
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v","--verbosity", type=int, choices=[0,1,2],default=1,
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity ==2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity ==1:
print("{}^2 == {}".format(args.square, answer))
else:print (answer)