问题标签 [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 投票
4 回答
10727 浏览

python - 使用 argparse 解析“arg= val”形式的参数

我想使用 argparse 来解析形式为“arg=val”的命令行 例如,用法是:

为了实现它,我正在这样做:

但是,问题在于,在调用脚本时:

我得到:

正如我所料

所以,问题是:我可以使用 argparse 来解析包含名称值对的 cmd 行吗?有什么提示吗?

编辑:我想这样做而不是像 --conf_dir=/tmp/good_dir 这样的原因是因为还有其他工具(用其他语言编写),它使用 conf_dir=/tmp/good_dir 风格的参数。为了保持一致性,我将以这种方式解析 args。

0 投票
1 回答
5398 浏览

python - 具有依赖和冲突的python argparse子命令

我想使用 argparse 来构建一个带有子命令的工具。可能的语法可能是

/tool.py 下载 --from 1234 --interval 60

/tool.py 下载 --build 1432

/tool.py 清洁 --numbers 10

所以我想用argparse来实现:

  1. 确保“--from”和“--interval”总是一起使用
  2. 确保“--build”永远不会与其他参数一起使用

但是我没有找到将“--from”和“--internal”配对到一个组,然后使该组与“--build”互斥的方法。

以下是我当前的代码,它只会使“--from”和“--build”互斥。既不能确保 '--from' 和 '--interval' 结合在一起,也不能确保 '--interval' 和 '--build' 是互斥的。

例如,

/tool.py 下载 -- 从 1234

不应被允许,因为“--from”必须与“--interval”一起使用。但我的代码默默地接受它。

/tool.py 下载 --interval 1234 --build 5678

不应该被允许,因为 '--build' 不能与其他参数一起使用。但我的代码也接受它。

任何建议将不胜感激。谢谢。

0 投票
2 回答
14527 浏览

python - Argparse - 如何指定默认子命令

我正在使用 Python 2.7 的 argparse 包为命令行工具编写一些选项解析逻辑。该工具应接受以下参数之一:

"ON":打开功能。
"OFF":关闭功能。
[未提供参数]:回显函数的当前状态。

查看 argparse 文档让我相信我想要定义两个(可能是三个)子命令,因为这三个状态是互斥的并且代表不同的概念活动。这是我目前对代码的尝试:

我的印象是,如果我提供 0 个参数,主解析器将设置func=print_state,如果我提供 1 个参数,主解析器将使用适当的子命令的默认值并调用func=set_state. 相反,我收到以下带有 0 个参数的错误:

如果我提供“OFF”或“ON”,print_state则调用而不是set_state. 如果我注释掉该parser.set_defaults行,set_state则正确调用。

我是一个熟练级别的程序员,但是 Python 的初级初学者。关于如何让这个工作的任何建议?

编辑:我查看子命令的另一个原因是我正在考虑未来的潜在第四个功能:

“FORCE txtval”:将函数的状态设置为txtval.

0 投票
1 回答
9654 浏览

python - 为什么 argparse 会给我一个列表中的列表?

我刚刚注意到 argparse 中的一个行为让我感到困惑(我猜我以前从未将它用于愚蠢的文件列表):

这给了我输出:

我希望multi['foo', 'bar', 'baz'],而不是列表中的列表。照原样,我必须在处理之前抓住args.multi[0],这没什么大不了的,但感觉就像一个丑陋的疣,我想了解它为什么在那里。

我是在做一些愚蠢的事情add_argument,还是这只是一个不可避免的怪癖?

0 投票
4 回答
17329 浏览

python - Python argparse 可选子参数

我想为我的程序提供一个参数,其中包含一些必需参数和一些可选参数。像这样的东西:

所以你可以通过其中任何一个:

可能有多个,所以它必须是一个 add_argument。例如:

我可以实现接近我想要的论点:

但不完全。有没有办法用 argparse 做到这一点?我知道我可以全部制作它们nargs="*",但 --help 不会列出可选参数的名称。如果我传递nargs="*"一个元组元组,argparse 会引发异常。

0 投票
2 回答
130692 浏览

python - argparse 模块如何在没有任何参数的情况下添加选项?

我创建了一个使用argparse.

脚本需要一个配置文件名作为选项,用户可以指定是完全执行脚本还是只模拟它。

要传递的参数:./script -f config_file -s./script -f config_file.

-f config_file 部分没问题,但它一直要求我提供 -s 的参数,这是可选的,不应跟随任何参数。

我试过这个:

出现以下错误:

''与而不是相同的错误0

0 投票
4 回答
45238 浏览

python - Python 和 argparse 的多个位置参数

我正在尝试使用 argparse 来解析我正在处理的程序的命令行参数。本质上,我需要支持在可选参数中传播的多个位置参数,但不能让 argparse 在这种情况下工作。在实际程序中,我使用的是自定义操作(每次找到位置参数时我都需要存储命名空间的快照),但我遇到的问题可以通过append操作复制:

我希望这会导致命名空间(a=True, b=True, input=['fileone', 'filetwo', 'filethree']),但看不到如何做到这一点 - 如果确实可以的话。如果可能的话,我在文档或谷歌中看不到任何一种方式或另一种方式,尽管它很有可能(可能?)我忽略了一些东西。有没有人有什么建议?

0 投票
4 回答
16981 浏览

python - 控制 argparse 帮助参数列表的格式?

输出:

我如何打印参考。当我使用选项运行脚本时,模型在同一行-m MODEL, --model MODEL而不是出现在单独的行上-h

0 投票
2 回答
8498 浏览

python - Python 中使用 argparse 所需的命令行选项

对于命令行参数,我有以下场景。如果有一个特定的选项,那么应该有一些其他必需的选项。例如,如果有--create,那么应该有--name。此外,如果有--remove,那么应该有--id。是否可以使用 argparse 实现此场景?还是别的什么?

0 投票
3 回答
22344 浏览

python - 如何在 python 中编写 argparse 组合选项

我一直在为要完成的这一小块活动而烦恼。我确实做了一些实验,但无法达到结果。

要求:

用法或规则:

  1. -c (比较)采用 2 个参数。

    -v(验证)采用 1 个参数。

    这两者中的任何一个都必须存在,但不能同时存在。

  2. -f 是强制参数(输出文件名)。

输出:

我能够获得所需的输出,如下所示

问题是:

当您使用时,test.py -h,
1.输出不会表明 -c/-v其中任何一个是强制性的,但不是两者都是。它表示所有参数都是可选的。
2. 输出将指示可选参数下的-f 选项不正确。-f 是强制参数,我想在外面显示 - 可选参数。

如何更改脚本以使 -h 选项输出对用户更友好(无需任何外部验证)

代码:

我正在使用下面的代码来实现输出,