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()來使用這些引數的值,在這個例子裡返回兩個屬性integers和accumulate,integers是一個包含所有整數的列表,accumulate屬性將會是sum()的函式功能,如果輸入引數--sum,預設是max()的功能。最後會呼叫分析函式parse_args(),如下:
parser.parse_args(['--sum', '7', '-1', '42'])
在函式parse_args()一般不輸入引數,它自動地使用
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 深圳