argparse--python 命令列解釋
阿新 • • 發佈:2018-11-27
python命令列直譯器包argparse
為什麼要用argparse
因為最近一直用python,python很好,有很多的開源工具包。然而python作為一種指令碼式程式語言,互動性很好。這對於一開始學習的時候提供了很大的便利,不用考慮太多的語法等等。然而當再深入一點就會遇到一些麻煩的地方,比如說我寫了一個深度學習專案,不想用grid search, 而是想用手調一些引數。這樣呢偏偏我用在用連線遠端伺服器,每次都要用vim開啟函式,然後修改引數再執行,真的很辛苦啊。幸運的是我瞭解到了原來python有argparse這樣的工具,這樣就可以直接在終端裡直接嘗試不同的引數了,那麼接下來就要開始學習一些例子了。
如何使用argparse
下面是一個例子,輸入一列數,輸出是最大值或者求和值。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
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()
print(args.accumulate(args.integers))
下面是測試程式碼:
$ python prog.py -h
usage: prog.py [-h] [--sum] N [N ...]
Process some integers.
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)
$ python prog.py 1 2 3 4
4
$ python prog.py 1 2 3 4 --sum
10
注意使用argparse的第一步是建立一個ArgumentParser 物件:
>>> parser = argparse.ArgumentParser(description='Process some integers.')
該物件會儲存命令列裡的命令並轉換為python的相應資料型別。由於命令資訊已經儲存在parser物件當中,因此後面需要將資訊解析並作為python的輸入。
>>> 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)')
然後 parse_args() 方法將會返回一個擁有兩個屬性的物件。1
To be continue
argparse更高階的功能有待慢慢學習。