Как знать, была ли optparse опция передана в командной строке или как значение по умолчанию

Используя Python optparse.py, там способ удаться, было ли определенное значение опции установлено из командной строки или из значения по умолчанию.

Идеально я хотел бы иметь dict точно так же, как значения по умолчанию, но содержащий опции, на самом деле предоставленные из командной строки

Я знаю, что Вы могли сравнить значение для каждой опции со значениями по умолчанию, но это не будет различать, значение было передано через командную строку, которая соответствовала значению по умолчанию.

Спасибо!


Править

Извините моя исходная формулировка не была очень четкой.

У меня есть большое количество сценариев, которые называют от пакетных файлов. Для целей аудита я хотел бы сообщить относительно опций, передаваемых, и передаются ли они из командной строки, значения по умолчанию или некоторых других средств, к файлу журнала.

Используя значения по умолчанию можно сказать, соответствует ли опция значению по умолчанию, но это все еще не говорит Вам, была ли она на самом деле предоставлена из командной строки. Это может быть релевантно: если опция будет передана из командной строки и согласится со значением по умолчанию, если Вы затем измените значение по умолчанию в коде, то сценарий все еще получит то же значение.

Мне чувствовало бы себя довольно естественным иметь эквивалент значениям по умолчанию, содержа значения, на самом деле предоставленные.

Сделать бетон вопроса, в этом примере:

>>> sys.argv = ['myscript.py','-a','xxx']
>>> import optparse
>>> parser = optparse.OptionParser()
>>> parser.add_option('-a', default = 'xxx')
>>> parser.add_option('-b', default = 'yyy')

Как я знаю, что опция a была передана из командной строки. Единственный путь состоит в том, чтобы проанализировать командную строку вручную?

(Я знаю, что это - довольно мелкая деталь, но я думал, что это будет стоить спросить в случае, если я пропускаю smthing на optparse),

Еще раз спасибо

8
задан user265454 9 April 2010 в 11:36
поделиться

1 ответ

Не зная, что ваш код, невозможно дать лучший ответ, но ...

  1. просто не передавайте значения по умолчанию синтаксическому анализатору и проверяйте наличие Нет значений. Значение None является значением по умолчанию для optparse lib, поэтому вы можете получить собственное значение по умолчанию и действовать как обычно;

  2. extend optparse для его специализации.

Я не знаю вашу программу, но обычно это не очень хорошее поведение при изменении дизайна, когда конфигурация такая же.

3
ответ дан 5 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: