python argparse模块
个人博客地址
argparse
模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后argparse
将弄清如何从sys.argv
解析出那些参数。
argparse
模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
import argparse # 实例化对象 parser = argparse.ArgumentParser() # 增加参数,如果定义了-v 那么用户传进来的参数就赋值给args.v parser.add_argument('-v') args = parser.parse_args()
# 打印args对象中的v属性,args是返回的一个对象,里面有各种传递进来的属性 print (args.v)
# python test1.py -v 1 >>> 1
# 打印一下args
print(args)
# python test1.py -v 1 >>> Namespace(v='1')
如果同时定义了--那么传进来的参数就会赋值给--
parser = argparse.ArgumentParser() parser.add_argument('-v','--s') args = parser.parse_args() print(args.s)
# python test1.py --s 1 >>> 1 python test1.py -v 1 >>> 1
也可以通过添加
action="store_true"
来实现返回bool值的效果,不加参数返回false,加参数不加字段返回true
来实现返回bool值的效果,不加参数返回false,加参数不加字段返回true
import argparse parser = argparse.ArgumentParser() parser.add_argument('-v','--s',action="store_true") args = parser.parse_args() print(args.s)
argparse对象的构造方法
def __init__(self, prog=None, usage=None, description=None, epilog=None, version=None, parents=[], formatter_class=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 - 额外的参数应该读取的文件的前缀字符集(默认:None) argument_default - 参数的全局默认值(默认:None) conflict_handler - 解决冲突的可选参数的策略(通常没有必要) add_help - 给解析器添加-h/–help 选项(默认:True)
添加一些常用的参数,看下效果
parser = argparse.ArgumentParser(usage='-v echo values',description='goon',epilog='end') parser.add_argument('-i',help='input int',action="store") parser.add_argument('-s',help='input str',action="store") args = parser.parse_args()
ArgumentParser.add_argument()的一些常用参数
parser = argparse.ArgumentParser(usage='-v echo values',description='goon',epilog='end') parser.add_argument('-i',help='input int',dest='int' ,action="store") parser.add_argument('-s',help='input str',action="store",default='dark') args = parser.parse_args() print(args.int) print(args.s)
#python test1.py -i 1 >>> 1 dark
name or flags - 选项字符串的名字或者列表,例如foo 或者-f, --foo。 action - 在命令行遇到该参数时采取的基本动作类型。 nargs - 应该读取的命令行参数数目。 const - 某些action和nargs选项要求的常数值。 default - 如果命令行中没有出现该参数时的默认值。 type - 命令行参数应该被转换成的类型。 choices - 参数可允许的值的一个容器。 required - 该命令行选项是否可以省略(只针对可选参数)。 help - 参数的简短描述。 metavar - 参数在帮助信息中的名字。 dest - 给parse_args()返回的对象要添加的属性名称。
action几个常用的变量
#action="store" #默认值,用来储存传递进来德参数 #action="store_const" 用来指定存储的参数,例如 import argparse parser = argparse.ArgumentParser(usage='-v echo values',description='goon',epilog='end') parser.add_argument('-i',help='input int',dest='int' ,action="store_const",const=42) args = parser.parse_args() print(args.int) #python test1.py -i >>>> 42
#'store_true'和'store_false' - 它们是'store_const' 的特殊情形,分别用于保存值True和False。另外,它们分别会创建默认值False 和True。例如 parser = argparse.ArgumentParser(usage='-v echo values',description='goon',epilog='end') parser.add_argument('-i',action="store_true") parser.add_argument('-s',action="store_false") args = parser.parse_args() print(args.i,args.s) # python test1.py -i -s >>>True False
# action="append"可以传多个值,多个值保存为一个列表 parser = argparse.ArgumentParser(usage='-v echo values',description='goon',epilog='end') parser.add_argument('-l',action="append") args = parser.parse_args() print(args.l) #python test1.py -l 123 -l 456 >>['123', '456']
代码示例
parser = argparse.ArgumentParser(description='icmp udp or icmp for monitor') parser.add_argument('-T',action='store', dest='ping_type',default='icmp') parser.add_argument('-t',action = 'store',dest='tip') parser.add_argument('-s',action='store',dest='sip') parser.add_argument('-i',action='store',dest='item') args= parser.parse_args() type = args.ping_type tip = args.tip sip = args.sip item = args.item main(type,item,sip,tip)
以驱魔为理想,为生计而奔波