问题标签 [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 回答
7628 浏览

python - Python argparse:nargs + 或 * 取决于先前的参数

我正在编写一个服务器查询工具,并且我有一些代码来解析最顶部的参数:

有没有更好的方法来做到这一点,最好是在解析器中?最后一个错误看起来有点不合时宜,如果我可以根据 --odam 或 ---odas 是否通过而为地址设置 nargs 那就太好了。我可以创建一个子解析器,但这会使帮助看起来有点奇怪,因为它会省略命令的地址部分。

0 投票
1 回答
15740 浏览

python - Python argparse:有没有办法在 nargs 中指定范围?

我有一个可选参数,它支持参数列表本身。

我的意思是,它应该支持:

  • -f 1 2
  • -f 1 2 3

但不是:

  • -f 1
  • -f 1 2 3 4

有没有办法在 argparse 中强制执行此操作?现在我使用 nargs="*",然后检查列表长度。

编辑:根据要求,我需要的是能够定义一系列可接受的参数数量。我的意思是,说(在示例中)2 或 3 个 args 是正确的,但不是 1 或 4 或任何不在 2..3 范围内的东西

0 投票
2 回答
1480 浏览

python - 使用 python argparse 递归

我正在使用 argparse 编写递归程序。唯一需要的参数是要操作的文件(或多个文件)。当我递归调用它时,我不需要文件名(因为我将调用一个新目录),但我需要选项。问题是 argparse 允许python programname.py -options arg FILENAME FILENAMEpython programname.py FILENAME FILENAME -options arg。我可以煞费苦心地寻找一个 '-' 并用大量的 if 语句来解决它,但我觉得应该有更好的方法。

不确定这是否重要,但这是我的 argparse 声明:

非常感谢!

0 投票
2 回答
1280 浏览

python - 有没有办法在 Argparser 中设置没有任何前缀的选项?

我正在使用 Argparser 来处理我的 CLI prog 的参数。但随着时间的推移,我认为使用它不是一个好主意。问题来了。我想使用没有任何前缀字符的选项。像git commitsvn move。我搜索了一下,发现 Argparse 有一个 add_subparser() 方法。让我们填充我们的foo prog:

现在让使用选项执行 foo 并打印args命名空间(我没有过去整个代码,你明白了):

如您所见,如果我执行 option deladd_project不会传递给 variable args。如果我的 main() 函数中有一个“if 子句”,这会导致问题,例如

我会得到一个AttributeError异常,如果我执行,命名空间没有名为add_project./foo del的属性。除此之外,我无法将任何参数传递给 optionsdeladd. 我还将 prefix_chars 设置为一个空字符串,这也不起作用。

有什么办法处理它?argparse 是否能够创建 git、svn 等选项。或者我应该创建自己的函数并自己处理所有参数?

0 投票
2 回答
3709 浏览

python - Python argparse:预先格式化的帮助文本?

我正在使用 argparse,我想在我的一个选项的帮助文本中显示一个列表。但是,argparse 从文本中删除新行并将其显示在单行上。

无论如何告诉 argparse 帮助字符串是预先格式化的,而不是去除换行符?

0 投票
2 回答
826 浏览

python - 如何将函数作为参数?(Python)

我正在编写一个程序来计算旋转固体的体积。第一步是计算积分。我正在使用scipy.integrate它,但我无法找出获得方程式的最佳方法(如x=x**2命令行中的输入。我最初计划添加一个参数“相对于:x|y”,然后采用作为 lambda 函数。不幸的是,argparse不会将 lambda 作为参数类型,并且尝试使用字符串构造 lambda ( f = lambda x: args.equation) 只会返回一个字符串(可以理解)。

这是我到目前为止所得到的:

任何建议将不胜感激谢谢

0 投票
2 回答
1054 浏览

python - argparse 的 add_argument 如何在关键字参数之前采用可变长度参数?

在 python2.7 中,argparse 模块有一个 add_argument 方法,该方法可以在其关键字参数之前采用可变数量的未命名参数,如下所示:

据我所知,以下函数定义不起作用:

add_argument模仿这种行为的正确方法是什么?

0 投票
2 回答
10798 浏览

python - 带有依赖项的python argparse

我正在编写一个脚本,它有 2 个互斥的参数,以及一个仅对其中一个参数有意义的选项。如果您使用没有意义的参数调用它,我正在尝试将 argparse 设置为失败。

要清楚:

-m -f说得通

-s说得通

-s -f应该抛出错误

没有争论是好的。

我的代码是:

哪个不起作用,因为它会吐出来

而不是我所期望的:

或类似的。

也不会抛出任何错误。

0 投票
2 回答
1577 浏览

python - argparse 位置参数的位置

而不是这个:

usage: installer.py [-h] [-v] dir

我想要这个:

usage: installer.py dir [-h] [-v]

有没有办法指定位置参数的位置?

0 投票
3 回答
326106 浏览

python - argparse 可选位置参数?

我有一个脚本,打算像这样使用: usage: installer.py dir [-h] [-v]

dir是一个位置参数,定义如下:

我希望dir它是可选的:当它没有被指定时,它应该只是cwd.

不幸的是,当我没有指定dir参数时,我得到Error: Too few arguments.