【发布时间】:2021-07-24 03:46:48
【问题描述】:
我目前正在为 python 中的 git 编写一个包装器,它允许在多个 git 存储库中运行某些 git 命令。现在,我想支持所有可能的 git 命令,我想通过以下方式做到这一点:我希望 argparse 只解析全局选项和子命令;子命令之后的所有内容(这是一个 git 命令)我只想按原样传递给 git。
argparse 可以做到这一点吗?
例子:
Passed on to git as-is
vvvvv
mgit -t add -p .
^^^^^^^^^^^
Parsed by argparse
【问题讨论】:
-
你试过使用
add_argument()的nargs参数吗?:docs.python.org/3/library/argparse.html#nargs -
嗯。我想在我的脚本中对 git 内部的了解尽可能少;所以我不想列出所有的 git 命令;我只想接受任何子命令和它可能得到的任何参数。
-
..but
nargs="*"可能是我的问题的部分解决方案.. -
@jramsey 哦,这几乎可以完美运行!我唯一的问题是我想使用我自己的与 git 参数冲突的全局参数,这会打乱参数解析。
-
双破折号参数“--”可能很有用,允许您将所有剩余参数解析为纯字符串,即使它们包含“-”。还有一个
argparse.REMINDERnargs 值,尽管这不是很可靠。parse_known_args也可能有用。