版本20190729:
BaseCommand:支持usage_format usage消息格式字符串和getopt_error_处理程序方法。
类BaseCommand
用于处理可嵌套命令行的基类。
这个类提供了基本的解析和分派机制
用于命令行。
实现命令行
一个实例是basecommand的一个子类:class MyCommand(BaseCommand):
GETOPT_SPEC = 'ab:c'
USAGE_FORMAT = r"""Usage: {cmd} [-a] [-b bvalue] [-c] [--] arguments...
-a Do it all.
-b But using bvalue.
-c The 'c' option!
"""
...
the_cmd = MyCommand()
运行命令的方式是:the_cmd.run(argv)
子类通过重写以下方法进行自定义:apply_defaults(options):
准备options的初始状态
在应用任何命令行选项之前
apply_opts(options,opts):
将opts应用到options。
opts是一个选项值映射
由getopot.getopt返回。
cmd_subcmd(argv,options):
如果命令行选项后面跟着一个参数
其值为subcmd,
然后方法cmd_subcmd(argv,options)
将在包含命令行参数的argv处调用
在subcmd之后。
main(argv,options):
如果选项后没有命令行调整
或者第一个参数没有对应的
cmd_subcmd方法
那么方法main(argv,options)
将在包含命令行参数的argv处调用。
run_context(argv,options,cmd):
提供设置或拆卸操作的上下文管理器
分别在命令实现之前和之后发生。
如果实现是cmd_subcmd方法
然后用cmd=subcmd调用它;
如果实现是main
然后用cmd=None调用它。
帮助递归使用
每个命令的所有状态
包含在options对象中
因此在典型的应用中
所有的apply_opts,cmd_子md,main和run_context
应该是不引用self的静态方法。
社论:为什么不是阿帕斯?
主要是因为当错误调用时
argparse命令行打印帮助/用法消息
用SystemExit中止整个程序。
函数docmd(dofunc)
用于cmd子类方法的decorator
提供一些基本的服务质量。
这个装饰工:在上下文的cs.pfx.Pfx中包装函数调用
截取getopt.GetoptErrors,发出warning
并使用方法名运行self.do_help,
然后返回None
拦截其他Exceptions,
发出exception日志消息
并返回None
目的是修饰cmd.Cmddo_*方法:from cmd import Cmd
class MyCmd(Cmd):
@docmd
def do_something(...):
... do something ...
发布日志
版本20190729:
BaseCommand:支持usage_format usage消息格式字符串和getopt_error_处理程序方法。
版本20190619.1:
另一个棘手的docstring格式修复。
版本20190619:
小文档更新。
版本20190617.2:
皮棉。
版本20190617.1:
带有@docmd decorator和alpha-quality basecommand命令行帮助类的初始版本。
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库