- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 docopt 创建命令行界面。这是我的文件的简化版本:
#!/usr/bin/env python
"""
Test program.
Usage:
test.py [options]
Options:
-a <input>
-b
-c
-d
"""
import docopt
print docopt.docopt(__doc__)
我基本上希望能够以任何顺序指定任何选项。但是,如果我忘记为 -a
标志指定参数,则会得到如下输出:
$ python test.py -a -b -c
{"-a": "-b",
"-b": False,
"-c": True,
"-d": False}
Docopt 将 -b
标志视为 -a
标志的参数,而不是拒绝无效输入。有什么简单的方法可以检测到这一点,或者让 docopt 拒绝接受这种格式错误的输入吗?
最佳答案
关于短选项有一些歧义:最好使用 --option=ARG 长选项:
-o --option
Words starting with one or two dashes (with exception of "-", "--" by themselves) are interpreted as short (one-letter) or long options, respectively.
- Short options can be "stacked" meaning that -abc is equivalent to -a -b -c.
- Long options can have arguments specified after space or equal "=" sign: --input=ARG is equivalent to --input ARG.
-Short options can have arguments specified after optional space: -f FILE is equivalent to -fFILE.Note, writing --input ARG (opposed to --input=ARG) is ambiguous, meaning it is not possibe to tell whether ARG is option's argument or positional argument. In usage patterns this will be interpreted as option with argument only if option's description (covered below) for that option is provided. Otherwise it will be interpreted as separate option and positional argument.
Same ambiguity is with -f FILE and -fFILE notation. Although in the latter case it is not possible to tell whether it is a number of stacked short options, or an option with argument. These notations will be interpreted as option with argument only if option's description is provided.
关于python - 如何防止 docopt 吞下一个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15827784/
我需要浏览一个文件,然后将捆绑包与另一个文件连接起来。我尝试了下面的 gulp 代码,但它无法正常工作。 当我在 mymodule.js 中进行更改并运行 gulp 时,这些更改会出现在包文件中,但不
尝试创建 Flux 存储。当我运行 gulp 并检查我的 index.html 时,出现错误“Uncaught TypeError:监听器必须是函数” var AppDispatcher = requ
我在提醒自己“关键字”时偶然发现了这篇文章 http://effbot.org/zone/python-with-statement.htm 。我只是有一个小问题,可能是显而易见的问题。文章指出,这“
我正在使用 Oracle 11g(瘦驱动程序)和 Java 6 在 Windows 上的 Tomcat 7 中开发一个应用程序。我正在开发一个页面,让用户验证存储在 Oracle 数据库中的 SQL
除了向每个回调添加 try..catch block 之外,是否有任何方法可以处理从 jQuery 中的 AJAX 回调抛出的异常?在这种情况下不会调用错误函数。 $.ajax( { url:
我已经编写了代码(如下),以便能够将输入字段拖到另一个输入字段上,但似乎可拖动的燕子 input[text].onfocus . 这会导致问题,即所有可拖动的输入字段都被禁用(firefox)并且单击
在 jQuery 中,如果您在 ajax 回调方法中出错,您将收到正确的控制台错误消息和堆栈跟踪。 $.get("https://api.github.com/users/octocat/orgs",
我正在使用 Apache PdfBox 库,我注意到几乎所有东西都会抛出 IOException,考虑到大多数 IOException 实际上应该是非法状态异常,处理起来非常烦人,但似乎 apache
嘿,我是原型(prototype)的新手。问题是 dom:loaded 回调函数中的 javascript 错误不会在 firefox (webconsole/errorconsole/firebug
我有一个文本框,里面有这个: 问题是它吞下了 Tab 而不是跳转到下一个控件。如何捕获文本框的 Tab 键并仍然按 Tab 键顺序保留到下一个控件的 Tab 键?编辑:我也在使用 MVVM 并且 M
我正在尝试让 googletest 在我的 C++ 项目上运行,其中一部分涉及使用 EXPECT_THROW(statement, expected_exception);。我正在使用选择了“Appl
我不明白为什么原型(prototype)会抑制 dom:loaded 事件和 AJAX 处理程序中的错误消息。 给定以下 HTML 片段: Conforming XHTM
我是一名优秀的程序员,十分优秀!