python中的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

以上 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章