0x00 argparse 介绍

argparse 是 Python 的一个命令行解析包,用户编写可读性非常好的程序。

0x01 基本用法

1
2
3
4
import argparse

parser = argparse.ArgumentParser()
parser.parse_args()

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> python3 argparse-demo-help.py
> python3 argparse-demo-help.py --help
usage: argparse-demo-help.py [-h]

optional arguments:
-h, --help show this help message and exit
> python3 argparse-demo-help.py -h
usage: argparse-demo-help.py [-h]

optional arguments:
-h, --help show this help message and exit
> python3 argparse-demo-help.py -v
usage: argparse-demo-help.py [-h]
argparse-demo-help.py: error: unrecognized arguments: -v
>

0x02 固定参数

固定参数是必须按照固定的顺序加入的参数,而且不可缺省。如:ping 127.0.0.1 这样的一个命令,ping 后面直接更上 127.0.0.1

1
2
3
4
5
6
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("echo", help="Input what echo what.")
args = parser.parse_args()
print(args.echo)

运行结果:

1
2
3
4
5
6
7
8
9
10
11
> python3 argparse-demo-positional-argument.py hello
hello
> python3 argparse-demo-positional-argument.py -h
usage: argparse-demo-positional-argument.py [-h] echo

positional arguments:
echo Input what echo what.

optional arguments:
-h, --help show this help message and exit
>

0x03 可选参数

有两种方式:

  1. 一种通过一个 - 来指定的短参数,如 -h
  2. 一种通过 -- 来指定的长参数,如 --help

这两种方式可以同时存在,也可以只存在一个。

1
2
3
4
5
6
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-H', '--host', help='host')
args = parser.parse_args()
print('host is %s' % args.host)

运行结果:

1
2
3
4
5
6
7
8
9
10
> python3 argparse-demo-optional-argument.py -h
usage: argparse-demo-optional-argument.py [-h] [-H HOST]

optional arguments:
-h, --help show this help message and exit
-H HOST, --host HOST host
> python3 argparse-demo-optional-argument.py -H 127.0.0.1
host is 127.0.0.1
> python3 argparse-demo-optional-argument.py --host 127.0.0.1
host is 127.0.0.1

注意: 设置的参数不可以重名,会冲突。这也是为什么以上的例子中是 -H 而不是 -h ,因为 -h 已经被帮助信息默认绑定了。

0x04 参数默认值

1
2
3
4
5
6
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-H', '--host', help='host', default='127.0.0.1')
args = parser.parse_args()
print('host is %s' % args.host)

运行结果:

1
2
3
4
5
6
7
8
9
10
> python3 argparse-demo-with-default-value.py -h
usage: argparse-demo-with-default-value.py [-h] [-H HOST]

optional arguments:
-h, --help show this help message and exit
-H HOST, --host HOST host
> python3 argparse-demo-with-default-value.py
host is 127.0.0.1
> python3 argparse-demo-with-default-value.py -H 127.0.0.2
host is 127.0.0.2

0x05 总结

其实大部分时候我们只需要以上功能就足够了,所以一些其他的用法这里就不去过多的描述了。


喵喵怪的小枪枪、biu~~