跳转到主要内容

简洁的命令行选项解析器

项目描述

http://gfxmonk.net/dist/status/project/mandy.png

“mandy”是一个简单的命令行选项解析器(看那个微妙的名称链接?)

它使用了标准的optparse库,但使得常见功能易于编写(和阅读!)!参数类型检查非常简单,您可以提供自己的验证操作来进一步检查特定于应用的逻辑。

一个示例

import mandy
class Main(mandy.Command):
        # you should define `configure` and `run` methods for your
        # command to work

        def configure(self):
                # --name (string)
                self.opt('name', default='(unnamed)', desc="set the name")

                # -n [1-5], default of 1
                self.opt('num-things', int, short='n', long=None, default=1,
                         action=between_one_and_five, desc="num items (1-5)")

                # --frob or --no-frob
                self.opt('frob', bool, default=True, desc="use frobbing")

                # --debug (--no-debug is not added since opposite is False)
                self.opt('debug', bool, default=False, opposite=False,
                         desc="Set Debug mode")

                # --do-thing=yes/no (explicit value)
                # (on/off, true/false, yes/no and 1/0 all work for boolean values)
                self.opt('do-thing', bool, default=False, explicit=True, desc="yes/no")

                # arg is the same as opt, but without long/short options,
                # and optional default values
                # this makes:
                #    command [options] foo1 foo2 [bar] baz
                self.arg('foo1')
                self.arg('foo2', bool)
                self.arg('bar', default=None)
                self.arg('baz')

        def run(self, opts):
                # opts includes your named options and arguments as attributes
                print "you set name to %s" % (opts.name)

                # since you can have options that aren't valid python attributes,
                # you can also treat opts as a dict:
                print "and there are %s things" % opts['num-things']

def between_one_and_five(num):
        if not (num >= 1 and num <= 5):
                raise RuntimeError("number must be between one and five")

if __name__ == '__main__':
        Main()

当使用–help运行时,这将产生以下内容

Usage: example.py [options] foo1 foo2 [bar] baz

Options:
  -h, --help           show this help message and exit
  --name=NAME          set the name
  -n N                 num items (1-5)
  --frob               use frobbing
  --no-frob
  --debug              Set Debug mode
  --do-thing=DO_THING  yes/no

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发

mandy-0.1.4.tar.gz (6.8 kB 查看哈希值)

上传时间: 源代码

由以下支持