0

我打算使用 argparse 库编写命令,这是我的命令结构:

$ python cvs.py -d my_adress local diff -r xyz -N -d details

在这里,本地有多个命令分组,例如本地提交,本地添加等。例如 [-d my_address] 在 main 中解析,本地差异之后的所有开关都由为本地差异执行的函数一起解析。

同样,还有一个命令组与本地并行;说全球。

开关 -d 不与 -r 混合。因此,解析器解析 -r 不知道 -d ,反之亦然。

是否可以使用 argparse 来实现这一点?如果是的话,有人可以建议我一个粗略的算法来做到这一点。如果不是,在 python 中还有什么其他可能的方法来做到这一点?谢谢。

4

1 回答 1

1

nargs参数,即'*'选项。它不会进行子解析(我认为 argparse 根本无法做到这一点),但它至少会将您的选项分组,因此您将作为单独的选项 获取-d和返回。不会是一个已知的选择。我不知道 argparse 是否会将其视为错误(您不想要),或者只是.-r-N-r

你的方法可能会失败。CVS 子命令可以有各种单字母选项,如-d,-r等(这是一个很长的列表)。您会发现自己不断做出艰难的选择,是要支持特定的 CVS 选项作为子命令还是使用该字母作为您的cvs.py选项。

您可以引入一些标记来分隔 CVS 子命令,即python cvs.py -d my_adress local diff § -r xyz -N. 但是,这不再是真正的改进cvs -d my_adress local diff; cvs -r xyz -N

于 2015-05-19T07:03:12.920 回答