2015-03-13 5 views
0

Я пытаюсь прочитать следующие данные из отдельного .py-файла в другом каталоге, а именно: «assets.ovs.screen0».Получение значений из модуля по имени?

Показать здесь содержимое assets.ovs.screen0.placement:

selection_Size = [600,110] 
selection_Loc = [1500-600,208] 
selection_Mov = [0,115] 

В основе дерева представляет собой файл, test.py, в настоящее время чтения:

import assets.ovs.screen0.placement as placement 

requiredVar = "select_" 

print placement.select_Size 
print eval("placement."+ requiredVar) 

Если предположить, что есть более безопасный/простой способ сделать это, что бы это было?

+0

Если я вас правильно понял вы хотите, чтобы получить атрибут по имени. Попробуйте 'val = getattr (obj, 'attr_name', default_value)'. Также см. (Https://docs.python.org/2/library/functions.html#getattr) – jandob

ответ

2

Могу ли я попробовать этот способ:

param = ["selection_Size", "selection_Loc", "selection_Mov", "error"] 
for par in param: 
    print par, placement.__dict__.get(par, None) 

    # this should work too 
    # print par, getattr(placement, par, None) 

Выход:

selection_Size [600, 110] 
selection_Loc [900, 208] 
selection_Mov [0, 115] 
error None 
+0

Эй, это работает. Благодаря! – Kweb123

+0

Я думаю, ему лучше использовать 'getattr()' вместо '__dict __. Get()' lookup. (http://stackoverflow.com/a/14084917/2972353) – jandob

+0

Почему бы не иметь модуль, хотя? Этот ответ был направлен на занятия. – Kweb123

Смежные вопросы