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

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第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量