python-ceilometerclient命令行(2)
命令行解析工具argparse
argparse是python标准库中的模块,利用argparse,可以完成对命令行的参数定义、解析以及后续的处理。一个简单的例子:
# coding:utf-8
import argparse
#定义解析器
parser = argparse.ArgumentParser()
# 单-对外,--双-对内
# 添加参数
parser.add_argument('-v','--version',help="show version",action="store_true")
#解析参数
args = parser.parse_args()
#调用参数
if args.version:
print("this is version: caesar-1.00")
action - 遇到参数时的动作,默认值是store。store_const,表示赋值为const;append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
nargs - 参数的个数,可以是具体的数字,或者是?号,当不指定值时对于Positional argument使用default
default - 不指定参数时的默认值.
type - 参数的类型.
choices - 参数允许的值.
required - 可选参数是否可以省略(仅针对optionals).
help - 参数的帮助信息,当指定为argparse.SUPPRESS
时表示不显示该参数的帮助信息.
metavar - 在usage说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线
python-ceilometerclient
python-ceilometerclient的实现过程,如下:像版本信息、帮助信息、debug模式都在解析器中添加参数进行解析,而ceilometer sample-list、ceilometer query-samples 都会反射获取v2模块中do_sample_list、do_sample_querys 方法,构建sample-list、query-samples子解析器,添加参数sample-list、query-samples并关联对应方法。如此变可执行命令行调用v2包中的方法。
解析器的命令行[--version]版本查询,还支持<subcommand>输入命令。如本人写了个简单的实现,在v1中定义如下方法:
在命令行中调用,通过命令调用其中的打印方法:
其核心实现为子解析器添加方法名参数和关联反射所获取的方法 :具体可参考我的github: https://github.com/CaesarLinsa/ceilometer_TestCase
subparsers = parser.add_subparsers(metavar='<subcommand>')
submodule = importutils.import_module('Test.cmd.api')
for fn_names in (func for func in dir(submodule) if func.startswith('do_')):
command = fn_names[3:].replace('_','-')
callback = getattr(submodule,fn_names)
desc = callback.__doc__ or ''
help=desc.strip().split('\n')[0]
arguments = getattr(callback,'arguments',[])
subparser = subparsers.add_parser(command, help=help,
description=desc,
add_help=False)
subparser.add_argument('-h', '--help', action='help',
help=argparse.SUPPRESS)
self.subcommands[command] = subparser
for (args, kwargs) in arguments:
subparser.add_argument(*args, **kwargs)
subparser.set_defaults(func=callback)
return parser
python-ceilometerclient命令行(2)的更多相关文章
- python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis
目录 python 交互式命令行数据库连接助手 0. 操作示例 1. python 连接mssql 2. python 连接mysql 3. python 连接redis n. Tips python ...
- 【python】命令行解析工具argparse用法
python的命令行参数 之前有用到optget, optparse, 现在这些都被弃用了. import argparse parser = argparse.ArgumentParser() ar ...
- 基于Python与命令行人脸识别项目(系列一)
Face Recognition 人脸识别 摘要:本项目face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,方便大家使用.对于本项目可以使用 ...
- python制作命令行工具——fire
python制作命令行工具--fire 前言 本篇教程的目的是希望大家可以通读完此篇之后,可以使用python制作一款符合自己需求的linux工具. 本教程使用的是google开源的python第三方 ...
- python处理命令行参数
直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析? http://blog.chinaunix.net/uid-20786165-id-3182268.html sys.argv ...
- Python解析命令行读取参数 -- argparse模块
在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...
- Python执行命令行
背景 我们知道,虽然会破坏平台独立性,但是有的时候需要在代码里面调用命令行来获取一些信息,那么了解在 Python 中如何执行命令行至关重要 使用介绍 Python 中使用命令行可以通过 subpro ...
- awk,perl,python的命令行参数处理
Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性 ...
- Python 的命令行参数处理 optparse->argparse
optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧 ...
- Python 获得命令行参数的方法
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数1 ...
随机推荐
- 20165205 预习作业三 Linux安装及学习
Linux安装及学习 安装Ubuntu 1)安装版本 在安装VirtualBox时选择了VirtualBox 5.2.6 platform package 安装Ubuntu时选择了Ubuntu 16. ...
- 如何安装 Microsoft Office 兼容包,以便您可以在早期版本的 Microsoft Office 中打开和保存 Office Open XML 格式
https://support.microsoft.com/zh-cn/kb/923505 针对 Office 2003 的支持已终止 Microsoft 已于 2014 年 4 月 8 日终止了针对 ...
- oracle 12c ins-30131 执行安装程序验证所需的初始设置失败
- 15.纯 CSS 创作条形图,不用任何图表库
原文代码:https://segmentfault.com/a/1190000014768534#articleHeader1 HTML代码: <html> <head> &l ...
- 《汇编语言 基于x86处理器》第十三章高级语言接口部分的代码 part 2
▶ 书中第十三章的程序,主要讲了汇编语言和 C/++ 相互调用的方法 ● 代码,汇编中调用 C++ 函数 ; subr.asm INCLUDE Irvine32.inc askForInteger P ...
- 启动标志 和launchMode
(1) FLAG_ACTIVITY_NEW_TASK: 操作: Activity A启动开僻Task堆栈(堆栈状态: A), 在Activity A中启动Activity B, 启动Activity ...
- makefile中 $@, $^, $<, $?含义
$@ 表示目标文件 $^ 表示所有的依赖文件 $< 表示第一个依赖文件 $? 表示比目标还要新的依赖文件列表 例子 root_num.exe: root_num.o my_root.o gcc ...
- Office2019都有哪些强大功能
前阵子是微软一年一度的Ignite大会.而其中最引人注目.也是与我们一般人最息息相关的消息,当然是Office 2019的正式发布. 尽管Office 2019所更新的功能,对于Office 365的 ...
- Spring boot 配置文件 加载顺序
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 –file:./config/ – ...
- android的体系结构
android 体系结构:采用软件堆层的架构 ,四层1应用程序“: 提供一系列的核心应用程序 2应用程序框架 :提供安卓平台基本的管理功能和组件重用机制activityManager 管理应用程序的生 ...