這是一個引數解析,可以用它快捷的為你的程式生成引數相關功能
import argparse(匯入程式引數模組)
# 建立argparse物件,並將產品簡要說明加入
show = `程式說明` ===>程式簡要說明(字串),輸出help時會顯示
p = argparse.ArgumentParser(description=show)
# 建立一個引數,如果引數名稱前沒有‘-’或‘–’則該引數為必填引數,如果程式執行時不給它賦值則程式將丟擲異常(賦值時直接給值即可,不需輸引數名,參考ping命令)
p.add_argument(`引數名稱(-h時會顯示)`, `–別名(選填,`-引數名稱 = –別名`)`,+各種引數。。。)
# 建立一個‘–’引數,如果引數前有‘–’則為可選引數。在輸入‘–引數’後再賦值。
p.add_argument(`–引數名稱`,+各種引數。。。)
# 建立一個‘-’引數,如果引數前有‘-’則為可選引數。在輸入‘-引數’後再賦值。注意:如果引數有別名則實際引數值是賦給了別名。
p.add_argument(`-引數名稱`, `–別名(選填,`-引數名稱 = –別名`)`,+各種引數。。。)
add_argument方法引數說明:
help:針對該引數的說明。例:help=`this display information`
type:該引數字元型別(str,int,float等),如果輸入型別不對則會拋異常。例:type=int
action:當該引數值為”store_true”時表示建立的是一個機關,帶該引數時則表示開啟該機關(建立的引數(機關)此時的值為True),不帶該引數時則表示關閉該機關(建立的引數(機關)此時的值為False)。
(例:p.add_argument(`–v`,action=`store_true`) ===>如果帶該引數則‘v’的值為true)
choices:限定引數值範圍(規定只接收規定列表中的值),值為列表。例:choices=[1,2,3]
default:指定引數預設值。例:default=100
# 獲取程式引數的值,args是一個物件,該物件裡的若干屬性等於引數(提取引數的值:args.引數名稱)
args = p.parse_args()
# 建立兩個互斥的引數
group = parser . add_mutually_exclusive_group () ======> 建立一個互斥組
group.add_argument ( “-v” , “–verbose” , action = “store_true” ) ====>互斥組內的引數不可同時出現,否則拋異常
group.add_argument ( “-q” , “–quiet” , action = “store_true” ) ====>互斥組內的引數不可同時出現,否則拋異常
程式碼例項:
import argparse # 建立引數功能物件 show = `這是一個求長方形面積或長方體體積的程式` p = argparse.ArgumentParser(description=show) # 建立各個引數 p.add_argument(`-x`, help=`長方形的底邊長度`, type=int, choices=[1, 2, 3], default=2) p.add_argument(`-z`, `--kuan`, help=`另外一條邊長`, type=int, choices=[1, 2, 3], default=2) p.add_argument(`-y`, `--gao`, help=`長方體的高度`, type=int, choices=[1, 2, 3], default=2) # 建立互斥引數 group = p.add_mutually_exclusive_group() group.add_argument(`-v`, action="store_true", help=`求長方形面積`) group.add_argument(`-vv`, action="store_true", help=`求長方體體積`) # 提取引數的賦值 args = p.parse_args() # 利用引數的值進行計算 if args.v: print(`長方形面積是%d` % (args.x * args.kuan)) elif args.vv: print(`長方體體積是%d` % (args.x * args.kuan * args.gao)) else: print(`請用使用參數列明你要使用的功能!`)
程式執行命令:python a.py -x 3 -y 1 -z 2 -vv