python argparse模块


个人博客地址


http://www.darkghost.life


 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
 
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)

 

 

 

 

 

posted @ 2021-03-17 14:50  无限's-blog  阅读(69)  评论(0编辑  收藏  举报