1、定義:argparse是python標准庫里面用來處理命令行參數的庫
2、命令行參數分為位置參數和選項參數:
位置參數就是程序根據該參數出現的位置來確定的
如:
[root
@openstack_1
/]#
ls
root/
#其中root/是位置參數
選項參數是應用程序已經提前定義好的參數,不是隨意指定的
如:
[root
@openstack_1
/]#
ls
-l # -l 就是ls命令里的一個選項參數
3、使用步驟:
(1)import argparse 首先導入模塊
(2)parser = argparse.ArgumentParser() 創建一個解析對象
(3)parser.add_argument() 向該對象中添加你要關注的命令行參數和選項
(4)parser.parse_args() 進行解析
4、argparse.ArgumentParser()方法參數須知:一般我們只選擇用description
prog=None - 程序名
description=None, - help時顯示的開始文字
epilog=None, -
help時顯示的結尾文字
parents=[], -若與其他參數的一些內容一樣,可以繼承
formatter_class=argparse.HelpFormatter, - 自定義幫助信息的格式
prefix_chars='-', - 命令的前綴,默認是‘-’
fromfile_prefix_chars=None, - 命令行參數從文件中讀取
argument_default=None, - 設置一個全局的選項缺省值,一般每個選項單獨設置
conflict_handler='error', - 定義兩個add_argument中添加的選項名字發生沖突時怎么處理,默認處理是拋出異常
add_help=True - 是否增加-h/--help選項,默認是True)
5、add_argument()方法參數須知:
name or flags... - 必選,指定參數的形式,一般寫兩個,一個短參數,一個長參數
import argparse結果:
parser = argparse.ArgumentParser()
parser.add_argument('echo') # add_argument()指定程序可以接受的命令行選項
args = parser.parse_args() # parse_args()從指定的選項中返回一些數據
print(args)
print(args.echo)
G:\flower\python\arg_parse>python demo1.py foo
Namespace(echo='foo')
foo
action 表示值賦予鍵的方式,這里用到的是bool類型,action意思是當讀取的參數中出現指定參數的時候的行為
help 可以寫幫助信息
parser = argparse.ArgumentParser(description = 'this is a description')
parser.add_argument('--ver', '-v', action = 'store_true', help = 'hahaha')
# 將變量以標簽-值的字典形式存入args字典
args = parser.parse_args()
if args.ver:
print("Ture")
else:
print("False")
結果:
G:\flower\python\arg_parse>python demo1.py -v
Ture
G:\flower\python\arg_parse>python demo1.py -j
usage: demo1.py [-h] [--ver]
demo1.py: error: unrecognized arguments: -j
required - 必需參數,通常-f這樣的選項是可選的,但是如果required=True那么就是必須的了
type - 指定參數類型
# required標簽就是說--ver參數是必需的,並且類型為int,輸入其它類型會報錯結果:
parser.add_argument('--ver', '-v', required = True, type = int)
G:\flower\python\arg_parse>python demo1.py -v 1
Ture
G:\flower\python\arg_parse>python demo1.py -v ss
usage: demo1.py [-h] --ver VER
demo1.py: error: argument --ver/-v: invalid int value: 'ss'
choices - 設置參數的范圍,如果choice中的類型不是字符串,要指定type
表示該參數能接受的值只能來自某幾個值候選值中,除此之外會報錯,用choice參數即可
parser.add_argument('file', choices = ['test1', 'test2'])結果:
args = parser.parse_args()
print('read in %s'%(args.file))
G:\flower\python\arg_parse>python demo1.py test1
read in test1
nargs - 指定這個參數后面的value有多少個,默認為1
# 表示腳本可以讀入兩個整數賦予num鍵(此時的值為2個整數的數組)
parser.add_argument('filename', nargs = 2, type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))
結果:
G:\flower\python\arg_parse>python demo1.py 1 2 3
usage: demo1.py [-h] filename filename
demo1.py: error: unrecognized arguments: 3
分析:nargs還可以'*'用來表示如果有該位置參數輸入的話,之后所有的輸入都將作為該位置參數的值;‘+’表示讀取至少1個該位置參數。'?'表示該位置參數要么沒有,要么就只要一個。(PS:跟正則表達式的符號用途一致。)
如:
parser.add_argument('filename', nargs = '+', type = int)
args = parser.parse_args()
print('read in %s'%(args.filename))
dest - 設置這個選項的value解析出來后放到哪個屬性中
parser.add_argument('-file', choices = ['test1', 'test2'], dest = 'world')結果:
args = parser.parse_args()
print('read in %s'%(args.world))
G:\flower\python\arg_parse>python demo1.py -file test1
read in test1
以上