1. 程式人生 > >argparse--python 命令列解釋

argparse--python 命令列解釋

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更高階的功能有待慢慢學習。


  1. argparse — Parser for command-line options, arguments and sub-commands ↩︎