argparse模块是一个python标准库,它主要用于对用户从客户端输入的命令进行解析,这使得编写用户友好的命令行接口变得非常容易。
程序只需要定义好用户可以从终端可以输入哪些参数,以及参数对应的含义、数据类型即可,然后argparse将负责从sys.argv中解析出这些参数。argparse模块还会自动生成帮助信息和使用信息并且当用户赋给程序非法的参数的时候会出现友好的错误提示信息。
(2)创建一个解析器对象
(3)使用对象内置的add_argument()方法添加需要关注的命令参数和选项
(4)之后调用parse_args()方法解析命令即可
示例:
import argparse #导入argparse该模块;
parser = argparse.ArgumentParser() #创建一个解析器对象
parser.add_argument() #添加令行参数和选项,每一个add_argument方法对应一个参数或选项;
args=parser.parse_args() #调用parse_args()方法进行解析,解析成功之后即可使用
ArgumentParser对象介绍
class argparse.ArgumentParser(
prog=None,
usage=None,
description=None,
epilog=None,
parents=[],
formatter_class=argparse.
HelpFormatter,
prefix_chars='-',
fromfile_prefix_chars=None,
argument_default=None,
conflict_handler='error',
add_help=True)
参数说明:
参数 | 描述 |
---|---|
prog | 程序的名字(默认:sys.argv[0]) |
usage | 描述程序用法的字符串(默认:从解析器的参数生成) |
description | 参数帮助信息之前的文本(默认:空) |
epilog | 参数帮助信息之后的文本(默认:空) |
parents | ArgumentParser 对象的一个列表,这些对象的参数应该包括进去 |
formatter_class | 定制化帮助信息的类 |
prefix_chars | 可选参数的前缀字符集(默认:‘-‘) |
fromfile_prefix_chars | 额外的参数应该读取的文件的前缀字符集(默 |
argument_default | 参数的全局默认值(默认:None) |
conflict_handler | 解决冲突的可选参数的策略(通常没有必要) |
add_help | 给解析器添加-h/–help 选项(默认:True) |
ArgumentParser.add_argument(
name or flags...
[, action]
[, nargs]
[, const]
[, default]
[, type]
[, choices]
[, required]
[, help]
[, metavar]
[, dest])
参数说明
参数 | 描述 |
---|---|
name or flags | 选项字符串的名字或者列表,例如foo 或者-f, –foo |
action | 在命令行遇到该参数时采取的基本动作类型。 |
nargs | 应该读取的命令行参数数目。 |
const | 某些action和nargs选项要求的常数值。 |
default | 如果命令行中没有出现该参数时的默认值。 |
type | 命令行参数应该被转换成的类型。 |
choices | 参数可允许的值的一个容器。 |
required - 该命令行选项是否可以省略(只针对可选参数)。 | |
help | 参数的简短描述。 |
metavar | 参数在帮助信息中的名字。 |
dest | 给parse_args()返回的对象要添加的属性名称。 |
其中“type”、“help”、“action”、“default”、“name ”、“dest”使用最为频繁
(1)可选参数
代码如下:
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("-display",help="display the message!")
args=parser.parse_args()
if args.display:
print "Display is trun on!"
运行结果:
注:可选参数可以在add_argment("这里如果加上“-”,则说明是可选的,否则是必须的")定义
(2)短选项
有时候写一个匹配项的时候还需要写全拼,实在是有些麻烦,在Linux中大多数的交互命令都有简写,那么我们也可以来进行设置短选项
代码如下:
import argparse
parser=argparse.ArgumentParser()
parser.add_argument("-d","--display",help="display the message!",action="store_true")
args=parser.parse_args()
if args.display:
print "Display is trun on!"
(3)结合位置参数与可选参数
代码如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbose", action="store_true",
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbose:
print "the square of {} equals {}".format(args.square, answer)
else:
print answer
运行结果如下:
暂时到此告一段落!