$ mv --help
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-f, --force do not prompt before overwriting
-i, --interactive prompt before overwrite
......
importargparseparser=argparse.ArgumentParser(prog='argprog1')parser.add_argument('--foo',help='foo of the %(prog)s program')args=parser.parse_args()printargs
其中 help='foo of the %(prog)s program' 為 help 中, 對於 --foo 的解說
程式寫好之後, 先來看 help 有什麼改變
123456
$ python argprog1.py -h
usage: argprog1 [-h][--foo FOO]optional arguments:
-h, --help show this help message and exit --foo FOO foo of the argprog1 program
$ python argprog1.py --foo FOO BAR
usage: argprog1 [-h][--foo FOO]argprog1: error: unrecognized arguments: BAR
2.Positional Argument
再來, 於程式中加入 positional argument
和 optional argument 不一樣的地方在於
positional argument 是必須要輸入的argument
且 positional argument 的值, 是根據argument的位置而定
positional argument 的開頭, 沒有 - , 或 --
把 bar1 和 bar2 這兩個 positional argument 加到程式中,如下:
argprog2.py
1234567
importargparseparser=argparse.ArgumentParser(prog='argprog2')parser.add_argument('--foo',help='foo of the %(prog)s program')parser.add_argument('bar1',help='bar1 of the %(prog)s program')parser.add_argument('bar2',help='bar2 of the %(prog)s program')args=parser.parse_args()printargs
程式寫好之後, 先來看 help 有什麼改變
12345678910
$ python argprog2.py -h
usage: argprog2 [-h][--foo FOO] bar1 bar2
positional arguments:
bar1 bar1 of the argprog2 program
bar2 bar2 of the argprog2 program
optional arguments:
-h, --help show this help message and exit --foo FOO foo of the argprog2 program
接著輸入 positional argument 的值
輸入的時候, 不需要輸入argument的名稱
只要根據argument的位置, 依序輸入值就可以了
輸入的位置不同, argument的值就會不同, 如下:
12
$ python argprog2.py x y
Namespace(bar1='x', bar2='y', foo=None)
12
$ python argprog2.py y x
Namespace(bar1='y', bar2='x', foo=None)
另外, 也可以輸入 optional argument
可以在任意位置插入 optional argument
不會影響 positional argument 的值
12
$ python argprog2.py x y --foo z
Namespace(bar1='x', bar2='y', foo='z')
12
$ python argprog2.py x --foo z y
Namespace(bar1='x', bar2='y', foo='z')
12
$ python argprog2.py --foo z x y
Namespace(bar1='x', bar2='y', foo='z')
以下為出現error的情形
因為positional argument 是必須要輸入的
沒有輸入的話, 就會出現error message
123
$ python argprog2.py
usage: argprog2 [-h][--foo FOO] bar1 bar2
argprog2: error: too few arguments
123
$ python argprog2.py x
usage: argprog2 [-h][--foo FOO] bar1 bar2
argprog2: error: too few arguments
123
$ python argprog2.py x --foo y
usage: argprog2 [-h][--foo FOO] bar1 bar2
argprog2: error: too few arguments
3.Description and Epilog
如果我們要在 help 中, 加入關於整個程式的解說,
而不是針對個別的 argument做解說
可以用 description 和 epilog , 方法如下:
argprog3.py
12345678910
importargparseparser=argparse.ArgumentParser(prog='argprog3',description='### This is description. ###',epilog='### This is epilog. ###')parser.add_argument('--foo',help='foo of the %(prog)s program')parser.add_argument('bar',help='bar of the %(prog)s program')args=parser.parse_args()printargs
其中, description 和 epilog 為解說內容, 唯出現的位置不同
來看輸入 -h 後, 它們的位置在哪:
12345678910111213
$ python argprog3.py -h
usage: argprog3 [-h][--foo FOO] bar
### This is description. ###positional arguments:
bar bar of the argprog3 program
optional arguments:
-h, --help show this help message and exit --foo FOO foo of the argprog3 program
### This is epilog. ###
所以, description是在arguments解說的前方的內容
而epilog是在arguments解說的後方的內容
4.Default Value
針對 optional argument 在沒有輸入值得情形下
如果我們想要讓這個有 Default 的值, 而不是 None
可以用 default ,方法如下:
argprog4.py
12345
importargparseparser=argparse.ArgumentParser(prog='argprog4')parser.add_argument('--foo',default='10',help='foo of the %(prog)s program, (default: %(default)s)')printparser.parse_args()
其中 help='foo of the %(prog)s program, (default: %(default)s)'
是 help 中顯示的 default 值
然後輸入 -h 看看, help中有顯示出 default 的值是多少
123456
$ python argprog4.py -h
usage: argprog4 [-h][--foo FOO]optional arguments:
-h, --help show this help message and exit --foo FOO foo of the argprog4 program, (default: 10)
importargparseparser=argparse.ArgumentParser(prog='argprog5')parser.add_argument('--foo1',action='store_true',help='foo1 of the %(prog)s program')parser.add_argument('--foo2',action='store_false',help='foo2 of the %(prog)s program')args=parser.parse_args()printargs
importargparseparser=argparse.ArgumentParser(prog='argprog6')parser.add_argument('--foo',type=int,help='foo of the %(prog)s program, (type: %(type)s)')args=parser.parse_args()printargs
然後輸入 -h 看看, help中有顯示出 type 了
123456
$ python argprog6.py -h
usage: argprog6 [-h][--foo FOO]optional arguments:
-h, --help show this help message and exit --foo FOO foo of the argprog6 program, (type: int)