问题标签 [argparse]

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 回答
1145 浏览

python - 如何在没有 -- 的情况下使用 argparse 为单独的命令行收集参数?

我正在编写运行其他程序的 Python 程序,例如:

在这里, foo 和 bar 是 my-wrapper-program 的参数,git commit --all是我有兴趣运行的子命令。如何在 argparse 中执行此操作,而不必始终指定--特殊参数?(常见的情况是最简单的一种:my-wrapper-program command。)

(使用 optparse,您可以使用disallow_interspersed_args=False.)

0 投票
2 回答
1863 浏览

python - argparse 位置和可选参数的顺序不正确

为什么 argparse 不解析这些参数?

使用

这给出了以下错误:

错误:参数太少

如果我先通过 bar 参数,它会起作用:

现在,这本身并不算太糟糕。我可以先使用位置参数,只是这种行为与 argparse 为我们创建的帮助不一致,后者指出 bar 应该是最后一个:

用法:argparsetest.py [-h] [--foo FOO [FOO ...]] bar

那么如何使用一致的帮助文本来完成这项工作呢?

这是一个完整的测试程序

0 投票
8 回答
46959 浏览

python - Python argparse 和控制/覆盖退出状态代码

除了修改源代码之外,如果调用时出现问题,例如缺少必需的开关argparse,是否有任何方法可以控制退出状态代码?parse_args()

0 投票
8 回答
20953 浏览

python - 带有 argparse 和多个 -v 选项的详细级别

我希望能够通过在命令行中添加更多 -v 选项来指定不同的详细级别。例如:

将分别导致verbose=0、verbose=1、verbose=2和verbose=3。如何使用 argparse 实现这一点?

或者,也可以像这样指定它可能会很棒

0 投票
3 回答
3739 浏览

python - Python ArgParse 子解析器并链接到正确的函数

我正在创建一个小的 Python 脚本来管理不同类别的服务器(FTP、HTTP、SSH 等)

在每种类型的服务器上,我们可以执行不同类型的操作(部署、配置、检查等)

我有一个基Server类,然后是每个继承自此的服务器类型的单独类:

示例命令行可能是:

在命令行中,我需要的两个强制参数是:

  1. 要执行的操作
  2. 要创建/管理的服务器类型

以前,我是使用argparseandstore操作,并使用 adict将命令行选项与实际的类和函数名相匹配。例如:

(在我的实际代码中,valid_operations 并不是一个简单的 1:1 映射。)

然后使用相当糟糕的代码创建正确类型的对象,并调用正确的类。

然后我想我会使用 argparse 的subparsers功能来代替它。因此,我将每个操作(检查、构建、部署等)都设置为subparser

通常,我可以将每个子命令链接到一个特定的函数,并让它调用它。但是,我不想只调用通用check()函数——我需要先创建正确类型的对象然后在该对象中调用适当的函数。

有没有好的或pythonic的方法来做到这一点?最好是不涉及大量硬编码或设计不良的 if/else 循环?

0 投票
1 回答
1940 浏览

python - 如何使用 argparse 在 Python 中获取命令行参数?

我希望能够在通过命令行传递选项后保存整数值。理想情况下应该是:

  • -s- 存储以下整数

  • -p- 存储以下整数

最后一部分只能是三个选项之一(-r-w-c),这取决于我需要做什么。

我一直在尝试阅读教程,但它们都使用相同的两个示例,这些示例没有解释如何在-option.

0 投票
9 回答
16171 浏览

python - 默认子命令,或不使用 argparse 处理子命令

我怎样才能有一个默认的子命令,或者处理没有使用子命令的情况argparse

在这里,我希望选择一个命令,或者仅基于下一个最高级别的解析器(在本例中为顶级解析器)处理的参数。

0 投票
3 回答
7583 浏览

python - 只有一个带有 argparse 的命令行选项

我正在尝试使用 argparse 模块创建一个 CLI,但我想要具有不同参数要求的不同命令,我尝试了这个:

我想要的是能够跑步python test.py foopython test.py test somearg 但是当我跑步时,python test.py foo我得到了error: too few arguments. 有没有一种方法可以让命令表现得像git status,git commitpip install?还是有更好的方法在 python 中创建 CLI?

0 投票
3 回答
3414 浏览

python - Don't parse options after the last positional argument

I'm writing a wrapper around the ssh command line client. After the first positional argument that's part of command, all further options should also be treated as positional arguments.

Under optparse, I believe this would be done with disable_interspersed_args.

Presently I have something like this:

But if options are passed as part of the command (such as my_wrapper ls -l), they're instead interpreted by ArgumentParser as unknown options. error: unrecognized arguments: -l

If I use parse_known_args(), the options may be taken out of order.

Here you can see that -b's position before ls has been lost, and -a has been parsed out from the command, which is not desired.

How can I:

  • Prevent arguments from being parsed after a certain point?
  • Disable parsing of interspersed arguments?
  • Allow arguments with a prefix to be consumed as positional arguments?
0 投票
2 回答
504 浏览

python - 如何在 Pythonbrew 中使用带有空格的位置参数?

我一直在使用 argparse 模块来接受程序的输入,并取得了很大的成功。我已经定义了大约六个可选参数(需要以 -- 开头的参数可以放在列表中的任何位置)和一个位置参数(使用放置顺序来确定参数的必需参数),所以我的使用图表看起来像这(为简洁起见删除了额外的可选参数):

为了在 Debian(Python 2.6 附带)上运行 Python 2.7 脚本,我使用 pythonbrew 取得了成功,它允许多个 Python 安装共存于同一服务器上。使用它的一个很好的副作用是我可以关闭我的脚本的可执行权限,这使用户管理对我来说更容易。

一切都很好,直到我尝试存储到其中有空格的文件路径(我唯一的位置参数),我发现我不能!

都返回相同的错误信息

谁能确认这个错误?Python 组中还没有人提到它的事实让我相信这是一个 Pythonbrew 错误,但我希望保留 Pythonbrew 并找到运行此脚本的替代方法。现在,我只是将文件存储到一个没有空格的文件夹中,但我希望有人可以帮助解决这个错误。