这个星球上最酷的命令行界面

komandr的Python项目详细描述


把你的普通函数转换成酷的命令行界面!

komandr是一个智能的瘦包装器,功能强大的argparse模块让您 在secondz中构建事实上的standart命令行界面,同时为您提供 所有的灵活性。

示例

# example.py

from komandr import *


# straigforward ad-hoc usage
@command
def foo(bar, baz=None):
    print 'foo', bar, baz


# but also it allows you much more tuning
@command(name='cool_command_name')
@arg('baz', '-z', required=True, type=int)
def lame_command_name(foo, bar, baz=1):
    print 'lame_command_name', foo, bar, baz

if __name__ == '__main__':
    main()

需要帮助吗?:

$ python example.py --help
usage: example.py [-h] [-v] {foo,cool_command_name} ...

positional arguments:
  {foo,cool_command_name}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit

让我们进一步研究一下foo

$ python example.py foo --help
usage: example.py foo [-h] --baz BAZ bar

positional arguments:
  bar

optional arguments:
  -h, --help  show this help message and exit
  --baz BAZ

测试foo命令:

$ python example.py foo Hello
usage: example.py foo [-h] --baz BAZ bar
example.py foo: error: argument --baz is required

现在可以了:

$ python example.py foo Hello --baz World
foo Hello World

很酷,嗯?

这也显示了它的灵活性和可配置性:

$ python example.py cool_command_name Hello -z 'Non numeric' World
usage: example.py cool_command_name [-h] --baz BAZ foo bar
example.py cool_command_name: error: argument --baz/-z: invalid int value: 'Non Numeric'

正确答案应该是:

$ python example.py cool_command_name Hello -z 2013 World
lame_command_name Hello World 2013

享受吧!

许可证

版权所有(c)2012 Kadir Pekel。

兹免费准许任何人取得 此软件和相关文档文件(“软件”)用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

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

推荐PyPI第三方库


热门话题
我无法从java运行python脚本,我认为这是因为该脚本没有执行权限   Java Http客户端通过POST上传文件   java检查一个枚举对象是否顺序在另一个枚举对象之后?   java MOXy JAXB在XmlIDREF上断开为具有enum属性的类型   java如何在安卓应用程序中集成大地水准面模型计算?   使用Jackson和Hibernate的java多对多无限递归   Java显然是一个传递值,但需要一些澄清   Android Studio Room中带参数的java查询   java我想根据表单中输入的数字更改屏幕转换目的地   java正则表达式:所有格量词中的回溯   java当元素的数量导致在回收器上生成滚动时,如何将一个recyclerView的元素与另一个元素分开?   如何将结果集作为输入从java传递到oracle存储过程   java问答应用程序在最后一个问题中未显示对话框   令牌“{”上的java语法错误,应在该令牌之后切换标签   java我的while循环有什么问题?   java Spring 5 webclient调用没有超时   ArrayList中的java对象不使用泛型保留其类型