简单使用cli工具
使用
cli_工具的最简单示例是
以下:from cli_tools import *
@console
def function():
"""
Performs an action.
"""
...
在这个声明中,函数被定义为不接受参数
(除了argparse默认的"–help")。对
结果脚本将是"执行操作"。
要将其声明为实际的控制台脚本,下面的子句将
需要添加到setup中的
setup()
调用中。py:entry_points={
'console_scripts': [
'function = your_module:function.console',
],
}
特别注意函数名后面的".console"。
decorators向函数添加了几个属性,包括
callable
console()
,它执行实际的命令行
参数解析。
上面的例子是最简单的例子,但是
有趣的是一些定义的参数:@argument('--debug', '-d',
dest='debug',
action='store_true',
default=False,
help="Run the tool in debug mode.")
@argument('--dryrun', '--dry_run', '--dry-run', '-n',
dest='dry_run',
action='store_true',
default=False,
help="Perform a dry run.")
def function(dry_run=False):
"""
Performs an action.
"""
...
首先要注意的是取消了
@控制台
装饰者。使用控制台不会有任何伤害,但是
decorators执行相同的核心操作;只要其中一个
使用装饰器时,不需要控制台。
要注意的第二件事是为
"–dryrun"选项与唯一的函数参数匹配。当作为
控制台脚本,从命令行参数计算的值
将作为此关键字参数传递。
要注意的第三件事是为
"–debug"选项不匹配任何函数参数。那面旗子很简单
不能传递给函数。
(事实上,
调试
参数被特殊处理。下
正常情况下,如果函数引发异常,则
异常被强制为字符串,打印为标准错误,然后
控制台脚本退出。如果
调试
参数为
真
,
但是,将不会捕获异常,从而打印出
堆栈跟踪。)