当写一个Python脚本时经常会遇到不同参数不同功能的情况,如何做一个更好看的命令帮助信息以及对命令参数解析呢?
这就需要使用argparse模块
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import argparse
__metaclass__ = type
class Inventory:
def __init__(self):
self._read_cli_args()
if self._args.list: # 如果输入的参数为 --list 那么将执行这里
print("list")
elif self._args.host:
print(self._args.host)
def _read_cli_args(self):
# 创建一个解析对象
parser = argparse.ArgumentParser(description='这是命令的说明描述信息')
# required=True 表示必须提供该参数
parser.add_argument("--type", "-t", required=True, help="类型 tomcat|dubbo")
"""
向对象添加你要关注的命令行参数 一般写两个 一个长参 一个短参 action表示值赋给键的方式 布尔值(store_true|store),
当读取的参数中出现指定的参数时的行为,也就是存储True还是False
我这里写的是 store_true 表示输入 inventory.py --list 后,你获取list值就是true否则就是false
"""
parser.add_argument("--list", "-l", action="store_true", help="--list 参数功能说明")
# store的含义是需要在 --host 接收一个参数,并把这个参数存储到这个host中
parser.add_argument("--host", action="store", help="--host 参数功能说明")
# 为参数值指定可选范围,也就是这个参数的值只能是 0 1 2 其中之一,且默认值为1
parser.add_argument("-c", "--mychoice", type=int, choices=[0, 1, 2], default=1,
help="我的选择")
self._args = parser.parse_args() # 进行解析
# 解析完成后,self_args包含了所有必要的命令参数和值,如果想要获取那么就 self._args.键 来获取
print(self._args)
def main():
Inventory()
if __name__ == "__main__":
try:
main()
finally:
sys.exit()
帮助
作者:昀溪