python3中argparse模块
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
以上?
?
轉載自:?https://www.cnblogs.com/dengtou/p/8413609.html
總結
以上是生活随笔為你收集整理的python3中argparse模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 课堂练习:eval()、in()
- 下一篇: C++学习笔记系列一