Argparse:忽略未知参数中的破折号或收集值(可能以破折号开头)直到下一个已知命令

Argparse: Ignore dashes in unknown arguments or collect values (potentially starting with dashes) until the next known command

我有一个 Python 脚本,稍后将使用 supprocess.run 调用多个 Bash 脚本。调用 Python 脚本时,用户应该能够为 Bash 脚本指定参数列表(其中一些可能以连字符开头),例如

python script.py \
    --bash-args1 --param1 val1 --param2 val2 \
    --bash-args2 bla --param3 val3 --blu

Argparse 应该将其解析为 Namespace(bash_args1=['--param1', 'val1', '--param2', 'val2'], bash_args2=['bla', '--param3', 'val3', '--blu'])。有没有一种规范的方法可以实现这一目标?我不能使用 nargs=argparse.REMAINDERparser.parse_known_args,因为我需要为多个 Bash 脚本收集参数,如果次要参数以破折号开头,一个简单的 nargs='+' 将失败。

我想我需要以下其中一项:

子孙后代:

有几种方法可以解决 argparse 的这一限制。我包了一个 published it on PyPI. You can use it just like argparse. The only difference is that there is an extra option you can supply as nargs parameter in add_argument. When this option is used, the parser collects all unknown arguments (regardless of whether they start with a hyphen or not) until the next known argument. For more info check out the repo on github.