【发布时间】:2017-01-28 11:52:45
【问题描述】:
我使用出色的 Python Click 库来处理我的工具中的命令行选项。这是我的代码的简化版本(完整脚本here):
@click.command(
context_settings = dict( help_option_names = ['-h', '--help'] )
)
@click.argument('analysis_dir',
type = click.Path(exists=True),
nargs = -1,
required = True,
metavar = "<analysis directory>"
)
def mytool(analysis_dir):
""" Do stuff """
if __name__ == "__main__":
mytool()
如果有人在没有任何标志的情况下运行命令,他们会收到默认的点击错误消息:
$ mytool
Usage: mytool [OPTIONS] <analysis directory>
Error: Missing argument "analysis_dir".
这很好,但我很想告诉(非常)新手用户,使用帮助标志可以获得更多帮助。换句话说,当命令无效时,在错误消息中添加一个自定义语句,告诉人们尝试mytool --help 以获取更多信息。
有没有简单的方法来做到这一点?我知道我可以删除 required 属性并在 main 函数中处理这个逻辑,但是对于这样一个小添加感觉有点 hacky。
【问题讨论】:
-
我遇到了完全相同的问题。如果发生错误,我想自动打印出帮助,或者至少告诉用户如何打印出帮助。否则,我们必须假设使用我们工具的每个人都熟悉基于 unix 的思维方式。到目前为止,我很喜欢 click,但对这个问题没有得到回答感到沮丧,因为我想要一些有助于构建新手可以轻松使用的工具的东西。
-
刚找到这个,可能是个解决办法:stackoverflow.com/questions/35642202/…
-
不,那没用。
-
是的 - 我查看了这个 @blubberdiblub 但不知道如何在不使用
command.main(['command-name', 'args', 'go', 'here'])语法时实际实现它。我在任何地方都找不到任何例子并放弃了。如果您对如何使用上面示例中的语法应用它有任何指示,那将非常有帮助!
标签: python command-line-arguments python-click