-
Python 的命令列參數管理
-
argparse 模組
- 部署說明資訊
- 參數類型
Python 的命令列參數管理
當使用 sys 模組下的 argv,可以觀看當前的參數內容。
參數在 sys.argv 下是成 string 型態儲存,但是 list 成次序排列,且只會儲存當前輸入項目,因此在調用上十分不方便。
Python 的 argparse 模組是一個不錯的選擇(3.2 版加入),可以用簡單的設定設置參數名稱和類型,並自動生成類 Unix OS 的 help 選項供調用。
argparse 模組
簡單列出常用的選項。
參考資料:
- https://docs.python.org/3/library/argparse.html
- http://stackoverflow.com/questions/5262702/argparse-module-how-to-add-option-without-any-argument
- Python 函式庫語法範例字典:http://www.books.com.tw/products/0010726838
部署說明資訊
在腳本中設定:
import argparse parser = argparse.ArgumentParser( prog='prog.py', #程式名稱,預設 sys.argv[0] usage='%(prog)s [options]', #自訂使用方法外觀,預設由參數產生 description='程式說明', #頂端程式說明,預設 None epilog='程式說明2', #底端程式說明,預設 None prefix_chars='-', #參數起始字串,預設 '-' add_help=False, #是否開啟 Help 選項,預設 True ) parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer 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() #解析
如果有啟用 add_help 選項,模組產出的 Help 說明如下:
$ python3 prog.py -h usage: prog.py [options] 程式說明 positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max) 程式說明2
參數類型
add_argument() 方法中可使用的選項。
-
name or flags
名稱或標籤,看之前設置的 prefix_chars 決定,名稱只能為一個,標籤表示法可以有多個。
-
action
傳入參數的動作,預設為
'store'
。'store'
:儲存,啟用此標籤時會存入後方跟著的項目,按照 type 選項儲存輸入值。'store_const'
:儲存為常數,啟用此標籤時會存入一個定值,這時必須設定 const 選項。'store_true'
和'store_false'
:儲存為 True 或 False,啟用此標籤時會存入 True 或 False。'append'
:產生一個 list,啟用此標籤時會將後方跟著的項目,按照 type 選項儲存到 list 中。'append_const'
:產生一個 list,啟用此標籤時會將 const 選項的類型存入 list 中。'count'
:紀錄這個標籤出現的次數,如-v
選項輸入成-vvv
時會回傳 3。'help'
:預設已經加入,此時若是自行設置會導致衝突。'version'
:顯示版本而不啟動程式,這時必須設定 version 選項。argparse.Action
類型:繼承後,透過修改 call 和 init 方法來達成額外的條件。
-
nargs
決定多個參數傳入時的處理方式,預設由 action 選項決定。
'N'
:迭代,使用一個 list 包裝此標籤後的參數。'?'
:單一,一次只能傳入一個參數,後方的項目會被視為其他標籤。'*'
:不限,使用一個 list 包裝此標籤後的參數,多餘的參數會自動歸類到此標籤下。'+'
:至少一個,類似'*'
,但是在此標籤沒有任何參數時會跳出錯誤訊息。argparse.REMAINDER
物件:存為 list,使用一個 list 包裝此標籤和其參數。
-
const
根據 action 和 nargs 選項決定的定值。
-
default
未輸入時的預設值,不受 type 選項的轉換。
argparse.SUPPRESS
物件:若此選項沒有任何參數,不會建立這個選項。
-
type
轉換輸入值的類型,支援任何可呼叫(callable)的類型,預設為 string。
open
:這個類型可以開啟純文字格式的檔案。argparse.FileType('w')
:argparse 也提供讀寫檔案的選項,作用同上。- choices 選項會在 type 選項轉換完畢後才比對。
-
choices
比對輸入值的項目是否符合,可接受 list 與 generator,若否則跳出錯誤。
-
required
是否為必要標籤,預設為 False。若要啟用,將其設為 True 即可,Help 項目中會歸類成必要標籤。
-
help
當顯示 Help 項目時的說明文字,預設為空字串。
'%(arg)s'
:說明文字中可以引用其他選項,如%(default)s
、%(type)s
等,若要使用%
符號,可以用%%
表示。argparse.SUPPRESS
物件:這個標籤不會顯示在 Help 項目中。
Comments
comments powered by Disqus