1. 程式人生 > >python argparse 用法總結

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

-h

在這裡插入圖片描述

  • 列印幫助資訊,包括相關引數資訊

執行:python argparse_test.py hhhhhhh

在這裡插入圖片描述

  • 正常輸入,回顯輸入的字串

4.optional arguments

可選引數

  1. 一種是通過一個-來指定的短引數,如-h
  2. 一種是通過–來指定的長引數,–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)

在這裡插入圖片描述

12.參考

https://www.cnblogs.com/yymn/p/8056487.html