Python OptsParse Атрибут Проверка.. я думаю

У меня есть опция анализа. напр.:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("ablah, dest = 'a',\
    action = 'store', nargs=2)
parser.add_option("bblah, dest = 'b',\
    action = 'store', nargs=2)
parser.add_option("cblah, dest = 'c',\
    action = 'store', nargs=2)

теперь я бы получил словарь. Проблема это атрибут опц. Итак, я попробовал:

for x in opts.__dict__.iterkeys():
    if x = 'bblah':
        callfunction1(opts.bblah[0],opts.bblah[1])
    if x = 'ablah':
        callfunction2(opts.ablah[0],opts.ablah[1])
    if x = 'cblah':
        callfunction3(opts.cblah[0],opts.cblah[1])

проблема здесь в 2 раза.

  1. У меня есть несколько элементов в опт кортеж / словарь.
  2. Как проверить, чтобы убедиться, что эти объекты имеют значения. в противном случае я получаю, что вы не можете назвать значения с None. Мне нужно, чтобы эта "проверка" была здесь сделана, так как это вызовет некоторые серьезные ошибки, если я сделаю это в функции

Я знаю, что кто-то сказал, что подход обычно скачок, чем просить прощения, но я хотел бы сначала проверить.

Благодарю.

1 ответ

Я не уверен, что правильно понимаю вашу проблему, но, возможно, это может дать вам подсказку:

# map option name to function
func_map = {'ablah': ablah,
        'bblah': bblah,
        'cblah': cblah}

# filter out the options without argument
# this may be redundant, optparse can make proper validations
selected = filter(lambda x: x[1], opts.__dict__.items())

for k, v in selected:
    func_map[k](*v)
Другие вопросы по тегам