我正在使用optparse模块中的OptionParser来解析我使用raw_input()获得的命令。
我有这些问题。
1。)我使用OptionParser来解析这个输入,比如说。 (得到多个args)
my prompt> -a foo -b bar -c spam eggs
我通过在'-c'的add_option()中设置action ='store_true'来做到这一点,现在如果有另一个带有多个参数的选项说-d x y z那么如何知道哪个参数来自哪个选项?如果其中一个参数必须再次被解析,如
my prompt> -a foo -b bar -c spam '-f anotheroption'
2。)如果我想做这样的事情......
my prompt> -a foo -b bar
my prompt> -c spam eggs
my prompt> -d x y z
现在每个条目都不得影响上一个命令设置的其他选项。如何完成这些?
答案 0 :(得分:4)
对于第2部分:您需要为您处理的每一行创建一个新的OptionParser实例。并查看cmd module来编写这样的命令循环。
答案 1 :(得分:2)
您还可以使用nargs
选项属性解决#1,如下所示:
parser = OptionParser()
parser.add_option("-c", "", nargs=2)
parser.add_option("-d", "", nargs=3)
答案 2 :(得分:1)
optparse
通过要求参数始终具有相同的parameters数来解决#1(即使该数字为0),也不允许使用变量参数:
通常,给定选项需要 一个论点或它没有。很多 人们想要一个“可选的选项 参数“特征,意思是一些 如果他们选择将采取争论 看到它,如果不这样做就不会。这个 有点争议,因为它 解析模糊:如果“-a”需要 一个可选参数和“-b”是 完全是另一种选择,我们如何 解释“-ab”?因为这 歧义,optparse不支持 这个功能。
您可以通过不将先前的值重用到parse_args
来解决#2,因此它会创建一个新的值对象而不是更新。