Используя python optparse.py, есть ли способ выяснить, было ли задано конкретное значение параметра из командной строки или из значения по умолчанию.
В идеале я хотел бы иметь dict как значения по умолчанию, но содержащий параметры, фактически предоставленные из командной строки
Я знаю, что вы можете сравнить значение для каждого параметра со значениями по умолчанию, но это не будет отличать значение, передаваемое через командную строку, которая соответствует значению по умолчанию.
Спасибо!
EDIT
Извините, моя оригинальная формулировка была не очень ясной.
У меня есть большое количество скриптов, которые вызываются из командных файлов. В целях аудита я хотел бы сообщить о передаваемых параметрах и о том, передаются ли они из командной строки, по умолчанию или другими способами, в файл журнала.
Используя значения по умолчанию, вы можете определить, соответствует ли параметр значению по умолчанию, но это еще не говорит о том, был ли он фактически введен из командной строки. Это может иметь значение: если параметр передается из командной строки и согласуется со значением по умолчанию, если вы затем измените значение по умолчанию в коде, сценарий все равно получит то же значение.
Для меня было бы вполне естественным иметь эквивалент значений по умолчанию, содержащий фактически предоставленные значения.
Чтобы конкретизировать вопрос, в этом примере:
>>> sys.argv = ['myscript.py','-a','xxx']
>>> import optparse
>>> parser = optparse.OptionParser()
>>> parser.add_option('-a', default = 'xxx')
>>> parser.add_option('-b', default = 'yyy')
Откуда мне знать, что опция a была передана из командной строки. Это единственный способ разобрать командную строку вручную?
(я знаю, что это довольно незначительный момент, но я подумал, что стоило бы спросить, если я пропущу что-то в optparse)
Еще раз спасибо