argparse允许任意标志

And*_*ndy 3 python argparse

有没有办法允许argparse接受任意标志?

例如,我有一个git push名为的包装器gitter

我宁愿不必指定所有可用的标志,git push因为有很多.

但是,我仍然希望能够做类似的事情

gitter --all --no-verify
Run Code Online (Sandbox Code Playgroud)

有没有办法argparse获取任意标志并将这些标志传递给git push

如果我这样做gitter --fake-flag,我立即得到一个错误,没有解析出标志的机会.

che*_*ner 6

您可以使用parse_known_args在列表中保留无法识别的标志.

p = ArgumentParser()
p.add_argument("--foo")
args, remaining = p.parse_known_args("--foo 5 --bar --baz".split())

# args.foo == 5
# remaining = ["--bar", "--baz"]
Run Code Online (Sandbox Code Playgroud)