1. argparse的介紹
argparse 是 Python 內置的一個用於命令項選項與參數解析的模塊。
主要有三個步驟:
- 創建 ArgumentParser() 對象
- 調用 add_argument() 方法添加參數
- 使用 parse_args() 解析添加的參數
2.參數解釋
add_argument() 方法定義如何解析命令行參數:
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
每個參數解釋如下:
- name or flags - 選項字符串的名字或者列表,例如 foo 或者 -f, –foo。
- action - 命令行遇到參數時的動作,默認值是 store。
- store_const,表示賦值為const;
- append,將遇到的值存儲成列表,也就是如果參數重復則會保存多個值;
- append_const,將參數規范中定義的一個值保存到一個列表;
- count,存儲遇到的次數;此外,也可以繼承 argparse.Action 自定義參數解析;
- nargs - 應該讀取的命令行參數個數,可以是具體的數字,或者是?號,當不指定值時對於 Positional argument 使用 default,對於 Optional argument 使用 const;或者是 * 號,表示 0 或多個參數;或者是 + 號表示 1 或多個參數。
- const - 一個在 action 和 nargs 選項所需的常量值。
- default - 不指定參數時的默認值。
- type - 命令行參數應該被轉換成的類型。
- choices - 參數可允許的值的一個容器。
- required - 可選參數是否可以省略 (僅針對可選參數)。
- help - 參數的幫助信息,當指定為 argparse.SUPPRESS 時表示不顯示該參數的幫助信息.
- metavar - 在 usage 說明中的參數名稱,對於必選參數默認就是參數名稱(上面的 name or flags),對於可選參數默認是全大寫的參數名稱.
- dest - parse_args() 方法返回的對象所添加的屬性的名稱。默認情況下,對於可選參數選取最長的名稱,中划線轉換為下划線.
3.基本使用
先運行一個干凈的argparse,示例1:
import argparse parser = argparse.ArgumentParser() parser.parse_args()
將上面的代碼保存為文件 argparse_usage.py
,在終端運行,結果如下:
由於沒有添加任何參數,所以只能用自帶的 -h(--help)參數
現在來加一個參數,示例2:
import argparse parser = argparse.ArgumentParser() parser.add_argument('integer', type=int, help='display an integer') args = parser.parse_args() print(args.integer)
將上面的代碼保存為文件 argparse_usage.py
,在終端運行,結果如下:
加定位參數,示例3:
import argparse parser = argparse.ArgumentParser() parser.add_argument("square",type=int,help="display a square of a given number") args = parser.parse_args() print(args.square ** 2)
將上面的代碼保存為文件 argparse_usage.py
,在終端運行,結果如下:
加可選參數,示例4:
import argparse parser = argparse.ArgumentParser() parser.add_argument('--square',type=int,help='display a square of a given number') parser.add_argument('--cubic',type=int,help='dispaly a cubic given number') args = parser.parse_args() if args.square: print(args.square**2) if args.cubic: print(args.cubic**3)
注意這一行:parser.add_argument("--square",
,type=int,help='display a square of a given number'),
定義了可選參數--square,通過解析后,其值保存在args.
square變量中
將上面的代碼保存為文件 argparse_usage.py
,在終端運行,結果如下:
混合使用,示例5:
import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers',metavar='N',type=int,nargs='+',help='an integers for the accumulator') parser.add_argument('--sum',dest='accumulate',action='store_const',const=sum,default=max,help='sum the integers(default:find the max)') args = parser.parse_args() print(args.accumulate(args.integers))
將上面的代碼保存為文件 argparse_usage.py
,在終端運行,結果如下: