python - Argparse: "-p"或 "-p=value"但不是 "-p value"

标签 python argparse

有没有办法添加一个只能用作 -p 的参数?或 -p=value ,但不是 -p value我想添加一个可选参数 --parallel/-p到脚本。这是我希望用户传递它的方式:

./script arg1 arg2 -p    # this defaults to 10
./script arg1 arg2 -p=13 # This is fine and will set the value to 13
./script arg1 arg2 -p 13 # This is NOT fine and I want to ban this. Next line will tell why.
./script -p arg1 arg2    # I want -p to be usable regardless of its position. 
# But here arg1 will be considered as an argument of -p option, which is unwanted.

最佳答案

不幸的是,您在这里有两个问题:

  • argparse只允许 --option=value对于长参数,当名称长于一个字符时生成。
  • argparse没办法强制执行--option=value语法和 --option value将永远是可能的。

  • 您可能必须使用 sys.args 中的内容编写自己的解析器(如果您只有一个选项,可以通过搜索以 "-p" 开头的参数来快速完成。

    关于python - Argparse: "-p"或 "-p=value"但不是 "-p value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68095696/

    相关文章:

    python - 从 URL 下载文件并将其保存在 Python 文件夹中

    python - 在 csv 文件 python 中添加行 - "wb"不起作用

    php - 重新格式化 Excel 布局以适应 JSON

    python - 检查 argparse 参数集,或使用默认值,或覆盖

    python - 不要在最后一个位置参数之后解析选项

    python - 将所有查询结果返回至 Alexa Skill

    python - 使用 lxml 在根元素之前/之后添加或追加 PI

    python - 将强制参数添加到可选参数

    Python argparse IndexError 传递 "-a="

    python - argparse 可以接受参数值作为 key=val 对吗