问题标签 [docopt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
127 浏览

python - 脚本作为模块加载时如何获取docopt默认参数

我正在与多个作者一起开展一个大型项目,因此我试图避免进行太多更改。我有一个脚本,它使用 docopt 传递选项,并将其中一些设置为默认值。

我通过将该脚本作为模块导入来从该脚本加载了一个类,但是当我调用一个方法时,它失败了,因为它期望由 docopt 设置一个默认选项,其中有很多。有没有办法从docopt中提取默认选项?

0 投票
1 回答
1386 浏览

python - python 3 上的 docopt 仅打印帮助屏幕并且不执行该功能

我第一次在 Python 3 中使用 docopt。当我运行代码时,输​​出只显示Usage选项数据,并没有执行模块中的函数。

这是一个例子。我在一个文件中有这个代码。

当我使用各种选项运行此文件时,我得到的只是文档字符串的副本。我应该看到docopt 从文档字符串参数创建的字典的副本。然后我还应该看到函数调用的打印结果。但除了文档字符串,我什么也没看到。

因此,如果我进行如下命令行调用:

返回的所有内容如下。

我想知道出了什么问题,这样我才能真正让定义的函数运行。

0 投票
1 回答
283 浏览

python - 无法使用 Python docopt 库检索文件名

我正在阅读《Violent Python 》一书,其中一个示例是 zip 文件破解程序,它针对 zip 文件测试潜在密码的字典文件(文本文件)。

我正在尝试使用该docopt库来解析命令行并为我提供这两个文件的文件名。这是我的代码。

这是我的代码。

0 投票
1 回答
599 浏览

python - docopt 的参数字典标志显示其参数的值而不是 True/False

我的 python 程序中有一个 docopt 文档字符串,看起来像这样:

当我尝试命令时

输出参数字典的形式为

这里的问题是,它没有给标志一个True值,而是给标志一个应该在键中的值。换句话说,标志获取参数的值,而参数的键本身不存在。当我尝试如下所示的命令时也会发生同样的情况:-o-oOUTPUTMODEL-oOUTPUTMODEL

输出字典:

'-u' 标志被分配了其参数的值,而参数MODEL(如用法中所示)不存在。

命令中的 -s 标志也会发生类似的事情

-s标志获取<dest>参数的值,而字典<dest>中不存在参数的键。

不久前它工作正常,直到我做了一些小改动。我试图查看文档字符串并阅读文档,但无法弄清楚我可能错在哪里,因为我似乎确实正确指定了选项描述。谁能帮我解决这个问题?

0 投票
0 回答
76 浏览

python - 列出标志一次但输入多个文件

使用上面的代码,以下工作:

但是,我也希望以下工作(以便支持通配符):

像这样:

我可以用 docopt 实现这一点吗?

0 投票
2 回答
577 浏览

c++ - 示例程序的 docopt 链接器错误

我正在尝试从 docopt 的 github 页面编译示例代码。我收到了一个链接器错误:

我有一个文件test.cpp和一个目录docopt,其中包含所有 docopt 文件。

test.cpp

这个错误是怎么回事?我该如何解决?我试过 clang-3.5 和 g++

0 投票
1 回答
101 浏览

r - littler/docopt 的 args 中的引号

我想将字符串传递key="value"给更小的脚本。在 bash 中,我有argtest.sh

我可以调用它,通过反斜杠保留 shell 中的引号,并在输出中看到它们:

但是我无法通过 littler/docopt 获得这样的参数。这是我的测试脚本:

shell 示例中的简单反引号不起作用:

我尝试过的所有其他事情也都失败了。喜欢:

谁能成为这里的赢家?

0 投票
1 回答
2029 浏览

python - 比在 Python 脚本中两次 if __name__ == '__main__' 更好的解决方案

我有多个使用 docopt 的 Python 脚本。

我的问题是两个脚本的可用选项略有不同 - 一个选项存在于一个脚本中,而另一个不存在。

我在下面包含了一个最小的工作示例。

如果我运行:

脚本没有运行,因为 --name=John 也被传递给 module1.py,它不是一个有效的选项。

使用我的实际脚本,在 docopt 解析参数后我有几个导入,因此我不能简单地将 docopt 调用移动到脚本的底部(if __name__ == '__main__':)。如果我这样做,导入脚本中的导入永远不会被调用,并且我会收到未定义的名称错误。

我找到了一种解决方法,但我认为这根本不是一个好习惯。

我正在做的是添加:

就在import docopt.

但是,我认为在脚本中包含其中两个语句是不好的做法。不过,我目前想不出任何其他解决方法。

有人可以提出更好的解决方案吗?提前致谢。

主文件

模块1.py:

编辑:

我忘了提到 other_file 模块有许多不同的版本。因此,docopt 选项之一是文件的路径。然后将其添加到 sys.path 中,如下所示:

为此,需要在全局范围内导入docopt,将other_file模块的路径添加到我的系统路径中。

我可以没有全局变量(下面的NUM,我实际文件中的DEBUG)。

0 投票
4 回答
857 浏览

python - Replacing sys.argv with docopt

I'm working on incorporating some string replacements and currently arguments are passed to my script using sys.argv[i]. I'd like to replace sys with docopt, but I've found the documentation relatively unclear so far.

The way my code currently works is

(I can also include multiple params to replace)

This then gets processed by

where params is the name of a set of defined parameters.

I think I should be able to get this to work with docopt, but so far what I have is more like

But this doesn't pass anything and seems to be the end of the details provided in the official documentation. Does anyone with more familiarity with docopt know how to more effectively pass the command line arguments? Or should I replace sys.argv with "arguments" after this?

Thanks!

0 投票
0 回答
39 浏览

node.js - 可选参数的可选值

在第二种使用场景中,我想将--watch参数设为可选。但是,如果被使用,我还想将其值设为可选,如果未指定则回退到默认值。我会想到类似的东西

会工作。但是,这给了我一个Unmatched '('错误。例如,

知道如何实现这一目标吗?

Node.js:5.1.0 文档:0.6.2