2015-03-13 52 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 2015-03-13 18:23:00

回答

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 2015-03-13 18:30:51

+0

我認爲他應該更好地使用'getattr()'而不是'__dict __。get()'查找。 (http://stackoverflow.com/a/14084917/2972353) – jandob 2015-03-13 18:32:24

+0

爲什麼模塊不會有字典?這個答案是面向課堂的。 – Kweb123 2015-03-13 18:36:24