问题标签 [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.
python - 如何在没有 -- 的情况下使用 argparse 为单独的命令行收集参数?
我正在编写运行其他程序的 Python 程序,例如:
在这里, foo 和 bar 是 my-wrapper-program 的参数,git commit --all
是我有兴趣运行的子命令。如何在 argparse 中执行此操作,而不必始终指定--
特殊参数?(常见的情况是最简单的一种:my-wrapper-program command
。)
(使用 optparse,您可以使用disallow_interspersed_args=False
.)
python - argparse 位置和可选参数的顺序不正确
为什么 argparse 不解析这些参数?
使用
这给出了以下错误:
错误:参数太少
如果我先通过 bar 参数,它会起作用:
现在,这本身并不算太糟糕。我可以先使用位置参数,只是这种行为与 argparse 为我们创建的帮助不一致,后者指出 bar 应该是最后一个:
用法:argparsetest.py [-h] [--foo FOO [FOO ...]] bar
那么如何使用一致的帮助文本来完成这项工作呢?
这是一个完整的测试程序。
python - Python argparse 和控制/覆盖退出状态代码
除了修改源代码之外,如果调用时出现问题,例如缺少必需的开关argparse
,是否有任何方法可以控制退出状态代码?parse_args()
python - 带有 argparse 和多个 -v 选项的详细级别
我希望能够通过在命令行中添加更多 -v 选项来指定不同的详细级别。例如:
将分别导致verbose=0、verbose=1、verbose=2和verbose=3。如何使用 argparse 实现这一点?
或者,也可以像这样指定它可能会很棒
python - Python ArgParse 子解析器并链接到正确的函数
我正在创建一个小的 Python 脚本来管理不同类别的服务器(FTP、HTTP、SSH 等)
在每种类型的服务器上,我们可以执行不同类型的操作(部署、配置、检查等)
我有一个基Server
类,然后是每个继承自此的服务器类型的单独类:
示例命令行可能是:
在命令行中,我需要的两个强制参数是:
- 要执行的操作
- 要创建/管理的服务器类型
以前,我是使用argparse
andstore
操作,并使用 adict
将命令行选项与实际的类和函数名相匹配。例如:
(在我的实际代码中,valid_operations 并不是一个简单的 1:1 映射。)
然后使用相当糟糕的代码创建正确类型的对象,并调用正确的类。
然后我想我会使用 argparse 的subparsers
功能来代替它。因此,我将每个操作(检查、构建、部署等)都设置为subparser。
通常,我可以将每个子命令链接到一个特定的函数,并让它调用它。但是,我不想只调用通用check()
函数——我需要先创建正确类型的对象,然后在该对象中调用适当的函数。
有没有好的或pythonic的方法来做到这一点?最好是不涉及大量硬编码或设计不良的 if/else 循环?
python - 如何使用 argparse 在 Python 中获取命令行参数?
我希望能够在通过命令行传递选项后保存整数值。理想情况下应该是:
-s
- 存储以下整数-p
- 存储以下整数
最后一部分只能是三个选项之一(-r、-w或-c),这取决于我需要做什么。
我一直在尝试阅读教程,但它们都使用相同的两个示例,这些示例没有解释如何在-option
.
python - 只有一个带有 argparse 的命令行选项
我正在尝试使用 argparse 模块创建一个 CLI,但我想要具有不同参数要求的不同命令,我尝试了这个:
我想要的是能够跑步python test.py foo
,python test.py test somearg
但是当我跑步时,python test.py foo
我得到了error: too few arguments
. 有没有一种方法可以让命令表现得像git status
,git commit
或pip install
?还是有更好的方法在 python 中创建 CLI?
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?
python - 如何在 Pythonbrew 中使用带有空格的位置参数?
我一直在使用 argparse 模块来接受程序的输入,并取得了很大的成功。我已经定义了大约六个可选参数(需要以 -- 开头的参数可以放在列表中的任何位置)和一个位置参数(使用放置顺序来确定参数的必需参数),所以我的使用图表看起来像这(为简洁起见删除了额外的可选参数):
为了在 Debian(Python 2.6 附带)上运行 Python 2.7 脚本,我使用 pythonbrew 取得了成功,它允许多个 Python 安装共存于同一服务器上。使用它的一个很好的副作用是我可以关闭我的脚本的可执行权限,这使用户管理对我来说更容易。
一切都很好,直到我尝试存储到其中有空格的文件路径(我唯一的位置参数),我发现我不能!
都返回相同的错误信息
谁能确认这个错误?Python 组中还没有人提到它的事实让我相信这是一个 Pythonbrew 错误,但我希望保留 Pythonbrew 并找到运行此脚本的替代方法。现在,我只是将文件存储到一个没有空格的文件夹中,但我希望有人可以帮助解决这个错误。