argparse的初認識
阿新 • • 發佈:2018-12-09
argparse模組作為optparse的一個替代被新增到Python2.7。argparse的實現支援一些不易於新增到optparse以及要求向後不相容API變化的特性,因此以一個新模組新增到標準庫。argparse通過在程式中定義好我們需要的引數,其將會從 sys.argv 中解析出這些引數,並自動生成幫助和使用資訊。當然,Python 也有第三方的庫可用於命令列解析,而且功能也更加強大,比如 docopt,Click。
使用argparse 配置命令列引數時,需要三步:
建立 ArgumentParser() 物件 呼叫 add_argument() 方法新增引數 使用 parse_args() 解析新增的引數
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 說明中的引數名稱,對於必選引數預設就是引數名稱,對於可選引數預設是全大寫的引數名稱.
- dest - 解析後的引數名稱,預設情況下,對於可選引數選取最長的名稱,中劃線轉換為下劃線.
第一段程式碼:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integer', type=int, help='display an integer')
args = parser.parse_args()
print args.integer
在命令列輸入
py learn_argparse.py 10
輸出結果為:
在命令列輸入:
py learn_argparse.py integer 10
輸出結果為:
把第一段的程式碼改為:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--integer', type=int, help='display an integer')
args = parser.parse_args()
print(args.integer)
在命令列輸入:
py learn_argparse.py integer 10
輸出結果為:
在命令列輸入:
py learn_argparse.py --integer 10
輸出結果為:
總結:
如果要在命令列用名字為這個變數賦值,這個變數名字要加--,如:
parser.add_argument('--integer', type=int, help='display an integer')
輸入命令為:
py learn_argparse.py --integer 10
在文中使用這個引數:
args.integer
這裡不需要用到--