argparse库的基本用法

import argparse

'''
argparse内置6种动作可以在解析到一个参数时进行触发:

store 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。

store_const 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。

store_ture/store_false 保存相应的布尔值。这两个动作被用于实现布尔开关。

append 将值保存到一个列表中。若参数重复出现,则保存多个值。

append_const 将一个定义在参数规格中的值保存到一个列表中。

version 打印关于程序的版本信息,然后退出
'''
# http://blog.xiayf.cn/2013/03/30/argparse/
# https://docs.python.org/3/library/argparse.html
def parse_usage():
    parser = argparse.ArgumentParser()

    parser.add_argument('-s', action='store', dest='simple_value',
            help='Store a simple value')

    parser.add_argument('-c', action='store_const', dest='constant_value',
            const='value-to-store',
            help='Store a constant value')

    parser.add_argument('-t', action='store_true', default=False,
            dest='boolean_switch',
            help='Set a switch to true')
    parser.add_argument('-f', action='store_false', default=False,
            dest='boolean_switch',
            help='Set a switch to false')

    parser.add_argument('-a', action='append', dest='collection',
            default=[],
            help='Add repeated values to a list')

    parser.add_argument('-A', action='append_const', dest='const_collection',
            const='value-1-to-append',
            default=[],
            help='Add different values to list')
    parser.add_argument('-B', action='append_const', dest='const_collection',
            const='value-2-to-append',
            help='Add different values to list')

    parser.add_argument('--version', action='version', version='%(prog)s 1.0')

    results = parser.parse_args()
    print('simple_value     =', results.simple_value)
    print('constant_value   =', results.constant_value)
    print('boolean_switch   =', results.boolean_switch)
    print('collection       =', results.collection)
    print('const_collection =', results.const_collection)

    return results


def simple_usage():
    parser = argparse.ArgumentParser()
    parser.add_argument('-o', '--output', dest='out')
    parser.add_argument('--address', '-a')
    parser.add_argument('-p')
    parser.add_argument('-v', dest='verbose', action='store_true')
    args = parser.parse_args()
    # print('output: {}'.format(args.output))
    print('output: {}'.format(args.out))
    print('address: {}'.format(args.address))
    print('p: {}'.format(args.p))
    print('verbose: {}'.format(args.verbose))


def pts_args_usage():
    parser = argparse.ArgumentParser()

    parser.add_argument('-m', '--module', action='store', dest='module_name', default='all',
        help='The module name["GAP", "GATTCL", "GATTSR", "L2CAP", "SM] of pts test, "all" means to run all modules')
    parser.add_argument('-t', '--type', action='store', dest='target_name', default='full',
        help='The test type of pts test, "full" means to run full test, "release" means to run release test, "A0" means to run A0 test')

    args = parser.parse_args()

    return args


def main():
    # simple_usage()

    args_result = pts_args_usage()
    print('module_name     =', args_result.module_name)
    print('target_name     =', args_result.target_name)

    # args_result = parse_usage()
    # print('simple_value     =', args_result.simple_value)
    # print('constant_value   =', args_result.constant_value)
    # print('boolean_switch   =', args_result.boolean_switch)
    # print('collection       =', args_result.collection)
    # print('const_collection =', args_result.const_collection)


if __name__ == '__main__':
    main()

results matching ""

    No results matching ""