1. 程式人生 > >argparse的初認識

argparse的初認識

     argparse模組作為optparse的一個替代被新增到Python2.7。argparse的實現支援一些不易於新增到optparse以及要求向後不相容API變化的特性,因此以一個新模組新增到標準庫。argparse通過在程式中定義好我們需要的引數,其將會從 sys.argv 中解析出這些引數,並自動生成幫助和使用資訊。當然,Python 也有第三方的庫可用於命令列解析,而且功能也更加強大,比如 docoptClick

使用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

這裡不需要用到--