標籤:image 表示 選擇性參數 png string類 ntp src 輸出 報錯
1.argparse模組作用
用於解析命令列參數
2.位置參數和選擇性參數
運行以下代碼:
import argparseparser = argparse.ArgumentParser()args = parser.parse_args()
運行結果:
參數為-h或--help時,parser.parse_args()會輸出命令列的位置參數position arguments和選擇性參數optional arguments
位置參數:按照參數的順序解析,參數必填
選擇性參數:以-或--開頭,參數非必填
位置參數,選擇性參數樣本如下:
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, help="position")parser.add_argument("--mode", "-m", type=int, help="optional")args = parser.parse_args()
運行結果:
num為一個位置參數,type表示參數的類型,參數預設都是string類型的,help表示參數的描述
--mode,以--開頭,為一個選擇性參數,可以有多個別名(--mode,-m)
選擇性參數,不是必填的,一般用來作條件分支,如下所示:
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, help="position")parser.add_argument("--mode", "-m", type=int, help="optional")args = parser.parse_args()result = 0if args.mode == 1: result = args.num ** 2else: result = args.num * 2print(result)
運行結果:
當mode=1時,計算num的平方,否則,計算num*2
指定參數的範圍,choice
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")parser.add_argument("--mode", "-m", action="store_true", help="optional")args = parser.parse_args()result = 0if args.mode: result = args.num ** 2else: result = args.num * 2print(result)
運行結果:
3.選擇性參數
位置參數沒有太多要講的,必填,類型必須和定義的一致(預設為string),否則會報錯。
選擇性參數有以下幾種action
1)store_true
有參數時為true,沒有為false,有參數時不能指定參數的值
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, help="position")parser.add_argument("--mode", "-m", action="store_true", help="optional")args = parser.parse_args()result = 0if args.mode: result = args.num ** 2else: result = args.num * 2print(result)
運行結果:
2)count
數值,-m表示1,-mm或-m -m表示2,以此類推
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")parser.add_argument("--mode", "-m", action="count", help="optional")args = parser.parse_args()result = 0if args.mode == 1: result = args.num ** 2elif args.mode == 2: result = args.num * 2else: result = args.numprint(result)
不加參數,表示None,可以設定預設count,則-m表示預設值+1
import argparseparser = argparse.ArgumentParser()parser.add_argument("num", type=int, help="position")parser.add_argument("--mode", "-m", action="count", default=1, help="optional")args = parser.parse_args()result = 0if args.mode == 1: result = args.num ** 2elif args.mode == 2: result = args.num * 2else: result = args.numprint(result)
運行結果:
python argparse詳解