argparse
2021-04-06 本文已影响0人
HelloSam
- 这篇文章写的不好
- argparse模块是python自带的命令行参数解析包,可以用来方便地读取命令行参数。当你的代码需要频繁地修改参数的时候,使用argparse可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
- argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时给出错误信息。
- 使用步骤
1. import argparse
2. parser = argparse.ArgumentParser()
3. parser.add_argument()
另外:
parser.print_help() # 可以打印帮助信息
也可以在命令行里面: python fileName.py -h 查看帮助信息
或者 python fileName.py --help 查看帮助信息
ArgumentParser.add_argument(name or flags...(一个命名或者一个选项字符串的列表,例如 weight 或 -w, --weight)
[, action](当参数在命令行中出现时使用的动作基本类型)
[, nargs](命令行参数可以接收的数目, 可选值为: ?为0或1个参数;*为0或所有参数; +所有, 并且至少一个参数)
[, const](被一些action和nargs选择所需求的常数)
[, default](当参数未在命令行中出现时使用的默认值)
[, type](命令行参数应当被转换成的类型)
[, choices](参数值只能从几个选项里面选择)
[, required](此命令行选项是否可省略, 如果为True, 不设置的话会报错)
[, help](一个此选项作用的简单描述)
[, metavar](在使用方法消息中使用的参数值示例)
[, dest](设置参数在代码中的变量名)
)
其中, [action]参数可以赋值为:
'store',
'store_const',
'store_true, store_false',
'append',
'append_const',
'count',
'help',
'version',
'extend'
代码演示:
import argparse
if __name__ == '__main__':
parse = argparse.ArgumentParser()
parse.add_argument('a', type=int)
parse.add_argument('-b', type=int)
parse.add_argument('c', type=int)
parse.add_argument('--d', type=int)
args = parse.parse_args()
print(args)
结果演示
上面写的忽略吧, 下面看一个例子就清楚了
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
# 有了required=True, default=1就没用了
parser.add_argument('-1', '-W', '--wigth', metavar='', type=int, required=True, help='wigth of a square', default=1, ) # dest=var_h
parser.add_argument('-2', '-H', '--height', metavar='', type=int, required=True, help='height of a square', default=1, ) # dest=var_w
parser.add_argument('-q', '--quiet', action='store_true', help='在命令行后写上参数-q, 就相当于给args.quiet赋值为True')
parser.add_argument('-v', '--verbose', action='store_true')
# 创建一个互斥组, 要么用-n, 要么用-m, 两个不能同时用, 以上的-q和-v是可以同时使用的
group = parser.add_mutually_exclusive_group()
group.add_argument('-y', '--yes', action='store_true')
group.add_argument('-n', '--no', action='store_true')
parser.add_argument('--num_list', nargs='+', type=int, help='至少传递一个数')
parser.add_argument('--str_list', nargs=2, type=str, help='--str_list参数后面要传递两个字符串')
args = parser.parse_args()
print('num_list: ', args.num_list)
print('str_list: ', args.str_list)
if args.quiet and args.verbose:
print("use -q and -v at the same time.")
else:
if args.quiet:
print('quiet')
elif args.verbose:
print('verbose')
else:
print('Area of square is ', args.wigth * args.height)
if args.yes:
print('yes')
elif args.no:
print('no')
else:
print('没写yes/no')
结果
另外注意,一般你就别用required=True, 不知道为什么 --help会报错, 去掉required=true之后就没事了,但是有时候不去掉required=true, 而是删掉下面的代码也行, 就很迷, 所以我以后反正还是不用required=true了,就这样吧!