這是一個參數解析,可以用它快捷的為你的程序生成參數相關功能
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