1. 程式人生 > >13.4 argparse--分析命令列選項、引數功能

13.4 argparse--分析命令列選項、引數功能

本模組主要為了方便實現命令列引數處理,或者分析命令列引數。

建立命令列引數分析器:

#python 3.4

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')

print(parser)

結果輸出如下:

ArgumentParser(prog='arg2.py', usage=None, description='Process some integers.', formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)

在這裡,設定引數description為描述這個命令列處理物件主要做什麼事情。

新增引數到分析器:

parser.add_argument('integers', metavar='N', type=int, nargs='+',

                     help='an integer for the accumulator')

parser.add_argument('--sum', dest='accumulate', action='store_const',

                     const=sum, default=max,

                     help='sum the integers (default: find the max)')

在想往命令列ArgumentParser物件裡新增引數,需要使用函式add_argument(),這個函式會把這些引數怎麼設定,怎麼樣執行的方式設定到物件裡。後面通過呼叫函式parse_args()來使用這些引數的值,在這個例子裡返回兩個屬性integersaccumulateintegers是一個包含所有整數的列表,accumulate屬性將會是sum()的函式功能,如果輸入引數--sum,預設是max()的功能。最後會呼叫分析函式parse_args(),如下:

parser.parse_args(['--sum', '7', '-1', '42'])

在函式parse_args()一般不輸入引數,它自動地使用

sys.argv引數,實現從腳本里獲取命令列的引數。

class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=, []formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)

建立一個ArgumentParser分析物件。

引數prog是程式的名稱,預設是sys.argv[0]

引數usage是描述本程程式的使用方法字串。

引數description是在引數使用前面顯示的字串。

引數epilog是在引數使用後面顯示的字串。

引數parents是那些引數被包括的ArgumentParser列表。

引數formatter_class是定製的輸出幫助類。

引數prefix_chars是引數前面定義的字元,預設是“-”。

引數fromfile_prefix_chars是定義命令列引數在檔案裡的字首字元。預設是空。

引數argument_default是所有引數的預設值。

引數conflict_handler是 解決衝突的處理策略。

引數add_help是新增 -h/-help選項給分析器,預設是True

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

定義一個命令列引數。

引數name or flags是一個名稱還是一個選項列表。

引數action是當遇到這個引數時怎麼樣處理。

引數nargs是指這個命令要消耗多少個命令列引數。

引數const是有常量的需求,但不需要讀取的。

引數default是當命令在命令列裡不存在時預設的值。

引數type是命令列引數轉換為那一種Python型別。

引數choices是這個命令引數允許的值的容器。

引數required是命令引數是否可選。

引數help是描述這個引數是做什麼事情的。

引數metavar是在使用說明裡引數的名稱。

引數dest是引數在分析之後產生的物件裡的屬性名稱。

ArgumentParser.parse_args(args=None, namespace=None)

轉換引數字串為命令列物件,並把相關引數轉換為屬性。

引數args是直接給出命令列引數,預設是使用系統的sys.argv引數;引數namespace是命名物件的名稱。

蔡軍生 QQ:9073204  深圳