python argparse(引數解析模組)

白樺林_HK發表於2019-02-01

 

這是一個引數解析,可以用它快捷的為你的程式生成引數相關功能

 

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

相關文章