argparse

2021-04-06  本文已影响0人  HelloSam
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了,就这样吧!

上一篇 下一篇

猜你喜欢

热点阅读