用于创建将类转换为命令行工具的装饰器集。

cltools的Python项目详细描述


要创建的装饰器集将类转换为命令行工具

想象一下,您有一个类想要从命令行使用,而没有 显式地解析命令行并生成所有路由信息。

这就是cltools通过在类和方法上证明decorators来实现 类可运行,并将方法转换为命令。

cltoolscreate命令工具,如git/hg/svn/apt get/apt cache/…,这意味着 工具将具有命令

简单示例:

想象一下,您有一个简单的类来生成任务,并且您想要生成一个命令行工具 带着这个。假设它是一个计算器模块calclib.py

#!/usr/bin/env pythonclassCalc(object):def__init__(self):passdefadd(self,value1,value2):returnvalue1+value2defmult(self,value1,value2):returnvalue1*value2

然后,我们将编写一个简单的类并转换为一个可运行的工具:

#!/usr/bin/env pythonimportsysfromcalclibimportCalcfromcltoolsimportCLRunnerfromsupertoolsimportsuperable@CLRunner.runnable()@superableclassCalcTool(object):'''A simple command-line wrapper for calclib'''def__init__(self):self._calc=Calc()defget_two_params(self,args):iflen(args)!=2:# errorexit provided by CLRunnable parentself.errorexit("Need two values VALUE1 and VALUE2 as arguments")try:value1=int(args[0])exceptException:self.errorexit("Value [%s] should be a valid number"%(args[0],))try:value2=int(args[1])exceptException:self.errorexit("Value [%s] should be a valid number"%(args[1],))returnvalue1,value2@CLRunner.command()defadd(self,args,kwargs):'''Add two values VALUE1 and VALUE2 given as parameters'''value1,value2=self.get_two_params(args)value=self._calc.add(value1,value2)self.status("Result : [%s]"%(value,))@CLRunner.command()defmult(self,args,kwargs):'''Multiplie two values VALUE1 and VALUE2'''value1,value2=self.get_two_params(args)value=self._calc.mult(value1,value2)self.status("Result : [%s]"%(value,))@CLRunner.command()defhelp(self,args=[],kwargs={}):'''Get this help'''self.__super.help()if__name__=='__main__':calctool=CalcTool()ifnot(calctool.run(sys.argv)):sys.exit(1)

现在我们可以测试命令行工具:

$ ./calc.py
Usage: calc.py COMMAND_NAME [OPTION] [VALUES]
A simple command-line wrapper for calclib

Commands:
    add                  Add two values VALUE1 and VALUE2 given as parameters
    help                 Get this help
    mult                 Multiplie two values VALUE1 and VALUE2

Error : Need a command name
$ ./calc.py add 4 17
Result : [21]
$ ./calc.py add 15 66 33
Error : Need two values VALUE1 and VALUE2 as arguments

注意,帮助是基于类中声明的命令自动生成的, 以及附加到类和方法的联机文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java库依赖项与非商业用途的兼容性   java将十六进制值转换为十进制值   java字符是如何工作的,它与英文字母有什么关系?   regex java模式从mapper生成的字符串中清除其他字符周围的引号   线程错误本地异常堆栈中的java异常   java如何设置RadioGroupFieldEditor的默认值   正在寻找在java中搜索数组的方法   java在洪水填充游戏中无法显示颜色   JAVAlang.NullPointerException由Geocoder使用GeoTools和Shapefile执行   java在安卓中请求最近的城市   java如何使用闭包编译器运行单个过程?   在java中播放wav文件的音频   JavaSpringHateoasControllerLinkBuilder方法显著增加了响应时间   JComboBox中JButton中的java压力效应   java如何在手机上制作网站图标   通过Java struts web应用程序在Azure AD中进行SAML身份验证