轉: http://vra.github.io/2017/12/02/argparse-usage/
argparse 是python自帶的命令行參數解析包,可以用來方便地讀取命令行參數,當你的代碼需要頻繁地修改參數的時候,使用這個工具可以將參數和代碼分離開來,讓你的代碼更簡潔,適用范圍更廣。
argparse使用比較簡單,常用的功能可能較快地實現出來,下面我分幾個步驟,以Python3為例,逐漸遞增地講述argparse的用法。
1. 基本框架
下面是使用argparser從命令行獲取用戶名,然后打印’Hello ‘+ 用戶名,假設python文件名為print_name.py
:
# file-name:print_name.py |
在命令行執行如下命令:
$ python print_name.py --name Wang |
上面的代碼段中,我們顯示引入了argparser
包,然后通過argparser.ArgumentParser
函數生成argparser對象,其中這個函數的description
函數表示在命令行顯示幫助信息的時候,這個程序的描述信息。之后我們通過對象的add_argument
函數來增加參數。這里我們只增加了一個--name
的參數,然后后面的default
參數表示如果沒提供參數,我們默認采用的值。即如果像下面這樣執行命令:
$ python print_name.py |
則輸出是:
$ Hello Great |
最后我們通過argpaser對象的parser_args
函數來獲取所有參數args
,然后通過args.name
的方式得到我們設置的--name
參數的值,可以看到這里argparse默認的參數名就是--name
形式里面--
后面的字符串。
整個流程就是這樣,下面我們詳細講解add_argument
函數的一些最常用的參數,使得你看完這個教程之后,能完成科研和工作中的大部分命令解析任務。
2. default
:沒有設置值情況下的默認參數
如同上例中展示的,default表示命令行沒有設置該參數的時候,程序中用什么值來代替。
3. required
: 表示這個參數是否一定需要設置
如果設置了required=True
,則在實際運行的時候不設置該參數將報錯:
... |
則運行下面的命令會報錯:
$ python print_name.py |
4. type
:參數類型
默認的參數類型是str類型,如果你的程序需要一個整數或者布爾型參數,你需要設置type=int
或type=bool
,下面是一個打印平方的例子:
#name: square.py |
執行:
$ python square.py -number 5 |
5. choices
:參數值只能從幾個選項里面選擇
如下面的代碼:
# file-name: choices.py |
如果像下面這樣執行會報錯:
$ python choices.py -arch resnet |
因為我們所給的-arch
參數resnet
不在備選的choices
之中,所以會報錯
6. help
:指定參數的說明信息
在現實幫助信息的時候,help參數的值可以給使用工具的人提供該參數是用來設置什么的說明,對於大型的項目,help參數和很有必要的,不然使用者不太明白每個參數的含義,增大了使用難度。
下面是個例子:
# file-name: help.py |
在命令行加-h
或--help
參數運行該命令,獲取幫助信息的時候,結果如下:
$ python help.py -h |
7. dest
:設置參數在代碼中的變量名
argparse默認的變量名是--
或-
后面的字符串,但是你也可以通過dest=xxx
來設置參數的變量名,然后在代碼中用args.xxx
來獲取參數的值。
8. nargs
: 設置參數在使用可以提供的個數
使用方式如下:
parser.add_argument('-name', nargs=x) |
其中x
的候選值和含義如下:
值 含義 |
如下例子:
# file-name: nargs.py |
執行命令和結果如下:
$ python nargs.py -name A B C |
參考鏈接: