Python的optparse中的有序选项

时间:2011-02-14 16:33:57

标签: python command-line-arguments optional-arguments

首先,我知道自2.7版以来不推荐使用optparse,但我只在我工作的机器上提供了Python 2.3。

问题是如何知道在命令行中给出选项的顺序,例如:

python example.py -f foo -b bar

将首先执行选项f,然后执行选项b和

python example.py -b bar -f foo

会做相反的事情。

我在阅读optargs文档后提出的唯一解决方案是使用callback操作来存储选项检测相对于其他选项的位置,因为options对象似乎没有遵循任何特定的顺序。

你知道另一个(也许是更好的)解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:4)

根据惯例,选择标志会根据顺序触发不同的行为。但如果您真的想检查订单,可以查看sys.argv

#assuming both -f and -b are given in cmdline and you need to check for order
index_f = sys.argv.find("-f")
index_b = sys.argv.find("-b")
if index_f < index_b: 
    # do something if -f is before -b