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