argparse

argparse
  argparse是Python内置的标准库模块。使用argparse可以方便地编写具有友好命令行接口的程序。argparse通过解析sys.argv,可以获取所有的命令行参数。argparse还可以自动地生成帮助和使用信息,并且在参数无效的情况下输出错误信息。

最简单的例子

  可以使用argparse模块中的类ArgumentParser编写一个最简单的例子:

#!/usr/bin/env python

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

  程序输出:
[root@localhost]# ./simplest.py
[root@localhost]#
[root@localhost]# ./simplest.py -h
usage: simplest.py [-h]

optional arguments:
-h, --help show this help message and exit
[root@localhost]#
[root@localhost]#
[root@localhost]# ./simplest.py --help
usage: simplest.py [-h]

optional arguments:
-h, --help show this help message and exit
[root@localhost]#
[root@localhost]# ./simplest.py Lucy
usage: simplest.py [-h]
simplest.py: error: unrecognized arguments: Lucy
[root@localhost]#

  可以看出,上面的例子中,argparse为程序提供了以下功能:
    1.使用-h或--help可以输出帮助和使用信息
    2.当输入无效的参数,例如上面的Lucy,会输出错误信息,提示用户无法识别的参数

位置参数

  可以通过方法add_argument()添加位置参数:
#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('name')
args = parser.parse_args()
print(args.name)

  程序输出:
[root@localhost]# ./positional_arg.py
usage: positional_arg.py [-h] name
positional_arg.py: error: too few arguments
[root@localhost]#
[root@localhost]# ./positional_arg.py Lucy
Lucy
[root@localhost]#

  可以看出添加了位置参数'name'之后,如果执行程序时未加参数,会提示缺少参数;当输入位置参数Lucy时,会将Lucy保存到args.name中。

可选参数

  可以通过方法add_argument()添加可选参数,于位置参数不同的是,参数名称需要以两个减号“--”开头,例如--age。

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--age')
args = parser.parse_args()
print(args.age)

  程序输出:
[root@localhost]# ./optional_arg.py
None
[root@localhost]# ./optional_arg.py --age 12
12
[root@localhost]#
[root@localhost]# ./optional_arg.py -h
usage: optional_arg.py [-h] [--age AGE]

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


参数的帮助信息

  可以通过方法add_argument()的help指定参数的帮助信息。

#!/usr/bin/env python

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--age', help='This help information.')
args = parser.parse_args()
print(args.age)

  程序输出:
[root@localhost]# ./help_info.py -h
usage: help_info.py [-h] [--age AGE]

optional arguments:
-h, --help show this help message and exit
--age AGE This help information.
[root@localhost]#

  可以看出--age参数的帮助信息打印出来了。


参考:argparse — Parser for command-line options, arguments and sub-commands