是否可以将docopt --help选项重定向到更少?

时间:2017-01-26 16:33:07

标签: python arguments docopt

通常情况下,man提供的长文档不会直接打印在屏幕上,而是重定向到较少(例如man ls)。

使用python中的docopt模块是否可以这样做?

1 个答案:

答案 0 :(得分:2)

没有官方方式,但您可以这样做:

"""
Usage:
    docopt_hack.py
"""

import docopt, sys, pydoc

def extras(help, version, options, doc):
    if help and any((o.name in ('-h', '--help')) and o.value for o in options):
        pydoc.pager(doc.strip("\n"))
        sys.exit()
    if version and any(o.name == '--version' and o.value for o in options):
        print(version)
        sys.exit()

docopt.extras = extras

# Do your normal call here, but make sure it is after the previous lines
docopt.docopt(__doc__, version="0.1")

我们所做的是覆盖extras函数,该函数在正常docopt(https://github.com/docopt/docopt/blob/master/docopt.py#L476-L482)中处理帮助的打印。然后我们使用pydoc将输入推送到寻呼机(https://stackoverflow.com/a/18234081/3946766)。请注意,使用pydoc是一种不安全的快捷方式,因为该方法没有记录,可以删除。 extras也是如此。 YMMV。