Упорядоченные параметры в optparse Python - PullRequest
2 голосов
/ 14 февраля 2011

Во-первых, я знаю, что optparse устарела с версии 2.7, но у меня есть только Python 2.3 на машине, на которой я работаю.

Вопрос в том, как узнать порядок, в котором параметры были заданы в командной строке, например:

python example.py -f foo -b bar

выполнит сначала опцию f, а затем опцию b и

python example.py -b bar -f foo

сделает наоборот.

Единственное решение, которое я нашел после прочтения документации optargs, - это использование действия callback для сохранения параметра и определения положения относительно других параметров, поскольку объект options похоже, не следует какому-либо определенному порядку.

Знаете ли вы другое (возможно, лучшее) решение этой проблемы?

1 Ответ

4 голосов
/ 14 февраля 2011

Недопустимо иметь флаги опций, которые запускают различные варианты поведения в зависимости от порядка. Но если вы действительно хотите проверить заказ, вы можете просто посмотреть в 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
...