• Python 命令行参数解析


    Python 命令行参数解析

    argparse 模块有参数解析器Parser和参数Arguement 结果集Namespace三个基本抽象。

    • Parser
      • 执行解析规则
      • 可以有子解析器(子命令)
    • Arguement
      • 设置参数名称、别名、帮助信息、是否为空
      • Namespace
        • 解析结果

    添加参数

    新建一个python 文件 test.py, 内容如下:

    import argparse
    parser = argparse.ArgumentParser(description='k8s助手,主要用来管理Pod,比如查看日志、重启pod、进入pod。', add_help=True)
    parser.add_argument("-n", "--namespace", help="操作的namespace。", default=None, required=True)
    args_namespace = parser.parse_args()
    print(args_namespace)
    

    执行: python test.py -h 结果如下:

    usage: test.py [-h] -n NAMESPACE
    
    k8s助手,主要用来管理Pod,比如查看日志、重启pod、进入pod。
    
    optional arguments:
      -h, --help            show this help message and exit
      -n NAMESPACE, --namespace NAMESPACE
                            操作的namespace。
    

    传入一个-n 参数执行命令python test.py -n os 结果如下:

    ➜  /tmp python test.py -n os
    Namespace(namespace='os')
    

    添加子命令

    新建一个test_subparser.py中加入以下代码:

    import argparse
    parser = argparse.ArgumentParser(description='k8s助手,主要用来管理Pod,比如查看日志、重启pod、进入pod。', add_help=True)
    
    # dest 参数将子命令的值注册到 args_namespace
    subparsers = parser.add_subparsers(dest="operation")
    # 添加一个子命令 exec
    exec_parser = subparsers.add_parser("exec", help="进入容器。")
    
    # exec_parser 是parser对象,可以添加参数。
    exec_parser.add_argument("-n", "--namespace", help="操作的namespace。", default=None, required=True)
    
    args_namespace = parser.parse_args()
    print(args_namespace)
    

    执行python test_subparser.py exec -n os  结果如下:

    ➜  /tmp python test_subparser.py exec -n os
    Namespace(namespace='os', operation='exec')
    
  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/oaks/p/12203453.html
Copyright © 2020-2023  润新知