argparse模組在pyhon3.2中新增到標準庫中
argparse模組可以讓我們更方便的開發命令列引數輸入。該模組定義了需要什麼引數,並且自動從sys.ar**中解析引數; 該模組還會自動生成help, usage資訊,當使用者輸入出錯時,自動提示。
python還有兩個類似的模組getopt(類似於c的getopt),和optparse(不推薦使用), argparse是基於optparse的。
如果使用者熟悉c的getopt可以用getopt。 如果不熟悉則建議使用argparse,使用argparse可以減少**量,並且得到更好的幫助和錯誤資訊。
命令列引數需要什麼功能?
必選引數
可選的,指定引數,一般指定引數會有長引數和短引數
可選引數需要有值
引數型別
help或者是usage幫助資訊
輸入有誤時的提示
import argparse
parser = argparse.argumentparser() #建立乙個parser物件
parser.parse_args() #將引數字串轉換為物件,並將它們指定為命名空間的屬性。返回已填充的命名空間。
執行這段**可以得到:
$ python3 prog.py
$ python3 prog.py --help
usage: prog.py [-h]
optional arguments:
-h, --help show this help message and exit
$ python3 prog.py --verbose
usage: prog.py [-h]
prog.py: error: unrecognized arguments: --verbose
$ python3 prog.py foo
usage: prog.py [-h]
prog.py: error: unrecognized arguments: foo
必須傳的引數,不傳則報錯
基本help是幫助資訊
parser.add_argument("echo") #新增佔位引數
parser.add_argument("square", help="display a square of a given number")
預設情況下,argparse把所有引數預設為strings型別,如果是其他型別,需要指定。
parser.add_argument("square", help="display a square of a given number", type=int)
這種情況下,可選引數是需要傳入值的。
parser.add_argument("--verbosity", help="increase output verbosity")
使用action="store_true", 它的幫助文字和普通的可選引數也不同。
它的預設為false, 當指定時,為true
parser.add_argument("--verbose", help="increase output verbosity", action="store_true")
佔位引數和可選引數,無論是在定義,還是在使用時的位置都不是固定的。任意位置傳入引數皆可,但需要注意,需要傳入的引數,一定要傳入。
choices: 指定數值選擇範圍, 引數的值只能從這幾個裡面選,如果不在其中,將會報錯
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")
指定一次值為1 eg: -v
指定兩次值為2 eg: -vv
以下是通過action的"count"這個值來實現的。這樣就讓可指定可選範圍的引數更加像是乙個flag,
如果不指定,則預設值為none。
parser.add_argument("-v", "--verbosity", action="count", help="increase output verbosity")
使用default選項來為物件指定預設引數
parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")
使用方法add_mutually_exclusive_group()生成的物件新增的引數,是互斥的。
parser = argparse.argumentparser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
prog.py: error: argument -q/--quiet: not allowed with argument -v/--verbose
在生成物件時,傳入description引數,將會顯示在help中。
parser = argparse.argumentparser(description="calculate x to the power of y")
#使用help後,得到說明
usage: prog.py [-h] [-v ] [--verbose] [-g] [-t | -p] url data
calculate x to the power of y
# 想要多次指定引數
還有另乙個可以控制多個引數的,是nargs引數。需要用時請自行查閱。
import argparse官方文件:# 使用description進行命令列的整體說明
parser = argparse.argumentparser(description="calculate x to the power of y")
# 必選引數
parser.add_argument("url", help="url is used to get the page source")
# 指定了引數型別的必選引數
parser.add_argument("data", help="url is used to get the page source", type=int)
# 可選引數,且指定了引數可選擇的範圍
parser.add_argument("-v", "--verbosity", help="increase output verbosity", choices=[0, 1, 2])
# 可以不寫傳入引數的要選引數, 預設為false,指定為true
parser.add_argument("--verbose", help="increase output verbosity",
action="store_true")
# -g -gg, 可使用多個的引數型別。
parser.add_argument("-g", "--gcount", action="count",
help="you can use -g, -gg ,-ggg", default=0)
# 互斥引數 以下指定 -t -p 為互斥引數,不要同時出現。常見選項有-q, -v
group = parser.add_mutually_exclusive_group()
group.add_argument("-t", "--verbose2", action="store_true")
group.add_argument("-p", "--quiet", action="store_true")
args = parser.parse_args()
print("urls", args.url)
print("data * 2", args.data * 2)
print("verbosity", args.verbosity)
print("verbose", args.verbose)
print("gcount", args.gcount)
來自這一篇
argparse 命令含引數模組
argparse是python的乙個命令列引數模組,可以解析命令列引數,生成幫助等。你可以這樣使用它 python usr bin python from argparse import argumentparser p argumentparser usage it is usage tip de...
python獲取命令引數 argparse模組
示例 如下 1 encoding utf 8 2import argparse34 defmain args 5print address format args.code address args.address會報錯,因為指定了dest的值 6print flag format args.fla...
Python getopt命令列引數模組
getopt模組專門用來處理命令列引數 getopt模組有兩個函式,兩個屬性 函式 getopt.getopt getopt.gnu getopt 屬性 getopt.error getopt.getopterror getopt.getopt args,shortopts longopts 引數a...