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 раза.
- У меня есть несколько элементов в опт кортеж / словарь.
- Как проверить, чтобы убедиться, что эти объекты имеют значения. в противном случае я получаю, что вы не можете назвать значения с 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)