子命令的小框架。

jumon的Python项目详细描述


jumon是一个用于子命令的小框架。

jumon是实现子命令的一个小框架。 可以实现子命令, 作为包中子模块的层次结构。 它从传递的参数中找到importable子模块, 在带参数的可导入子模块中运行main函数。

可以显示子命令的层次结构 使用tree命令等,因为它将子命令实现为 子模块的层次结构。 很容易看出子命令是在哪里实现的。

如果您试图实现 子命令。

安装

在源代码根目录中使用setup.py

$ python setup.py install

通过PIP(来自PYPI)

$ pip install jumon

如何使用

这是对如何使用教规的描述。 创建一个名为“testcmd”的包, 以及名为“testcmd.command”的子包。

$ mkdir testcmd
$ touch testcmd/__init__.py
$ mkdir testcmd/command

让我们在“testcmd.command”子命令中实现子命令。

首先,创建顶级命令。:

$ touch testcmd/command/__init__.py

testcmd/命令/初始化py:

import jumon

def main():
    jumon.entry(__name__)

在此包下是子命令的搜索范围。

接下来,创建子命令。:

$ touch testcmd/command/aaa.py

testcmd/command/aaa.py:

def main(argv):
    print 'OK'
    return 0

此逗号是打印字符串“OK”,并以退出代码0结束。

可以实现子命令的子命令。:

$ mkdir testcmd/command/bbb
$ touch testcmd/command/bbb/__init__.py
$ touch testcmd/command/bbb/ccc.py

testcmd/命令/bbb/u init.py:

def main(argv):
    print 'bbb'
    return 1

testcmd/command/bbb/ccc.py:

def main(argv):
    print 'ccc'
    return 2

我实现了子命令,称为“bbb”和“bbb ccc”。 这个会话“BBB”是打印字符串“BBB”,并以退出代码1结束。 这张“BBB CCC”是打印的字符串“CCC”,并以退出代码2结束。

接下来,安装“testcmd”。

$ cp testcmd $SITE_PACKAGES -R

最后,创建命令。:

$ touch test.py

测试.py:

#! /usr/bin/env python
import testcmd.command

def main():
    testcmd.command.main()

if __name__ == '__main__':
    main()

添加权限:

$ chmod 755 test.py

运行,显示用法。

$ ./test.py
Usage: test.py [options]

test.py: error: Command Not Found:

运行子命令“aaa”。

$ ./test.py aaa
OK
$ echo $?
0

运行子命令“bbb”。

$ ./test.py bbb
bbb
$ echo $?
1

运行子命令“bbb ccc”。

$ ./test.py bbb ccc
ccc
$ echo $?
2

是否要使用setup.py创建命令?

setup.py:

#-*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(
    name='testcmd',
    version='1',
    license='BSD',
    author='TakesxiSximada',
    author_email='takesxi.sximada@gmail.com',
    packages=find_packages(),
    entry_points = """\
    [console_scripts]
    testcmd = testcmd.command:main
    """
)

这很重要:

entry_points = """\
[console_scripts]
testcmd = testcmd.command:main
"""

是否要透明未定义的选项?

您可以使用jumon.transparentoptionparser()类。

>>> import jumon
>>> parser = jumon.TransparentOptionParser()
>>> opts, args = parser.parse_args(['-f', '-n', '1'])
>>> args
['-f', '-n', '1']

要求

  • python 2.6或later(不支持3.x)

许可证

apache许可证2.0

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

推荐PyPI第三方库


热门话题
java Hibernate会话。save()不返回值吗?   java JMS应用程序发布订阅   java使用字符串创建一个长度为n,高度为n的正方形   java如何在MySQL的SQL查询中传递ArrayList<>如IN子句   安卓 java。lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin。jvm。内部的内在的。检查参数不完整   如何用Java绘制交互式图形/线条?   java Blackberry移动Web应用快捷方式   java Json LocalDateTIme问题   java更改密钥的颜色   java在过滤条件之后在流上迭代时如何获取上一个对象   Java:按位和创建无符号字节   java在JavaScript中检索Velocity循环变量   java JButton不会出现在GUI上   java Cell API json转换到POJO   java在模拟中初始化静态最终变量