使用命令行模块和其他相关命令行的便利功能

cs.cmdutils的Python项目详细描述


版本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应用到optionsopts是一个选项值映射 由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_optscmd_子mdmainrun_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 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归