OptionParser.parse_args
возвращает объект с именами переменных параметров как атрибуты, а не как ключи словаря. Получаемая ошибка означает, что options
не поддерживает подписку, что обычно происходит при реализации __getitem__
.
Итак, другими словами, ваши варианты:
options.optiona
options.optionb
Вместо:
options['optiona']
options['optionb']
Подстановка переменных шаблона предполагает интерфейс, подобный dict
, поэтому он пытается найти optiona и optionb, используя последний подход.
Используйте vars, как подсказывает RoadieRich
в своем ответе, чтобы подход с заменой шаблонов работал. Кроме того, если вам не нужен объект Template
, я бы порекомендовал использовать простой print
:
print 'Option a is %s and option b is %s' % (options.optiona, options.optionb)
Вы также можете объединить два подхода, если считаете, что именованные строковые параметры лучше:
print 'Option a is %(optiona)s and option b is %(optionb)s' % vars(options)