2013-10-13 29 views
-1

我使用的是Python 3.3.2,我想讓我的代碼獲取一個字符串,並用它在另一個字符串中找到具有相同名稱的變量文件。讀取一個字符串,並用它來讀取另一個文件的變量的值

E.g.

File1.py包含:

global A1 
A1 = ['Plain'] 
global A2 
A2 = ['Beach'] 
global A3 
A3 = ['Swamp'] 

和File2.py包含:

import File1 
coords = A1 
location = eval(coords) 

,但不管我怎麼格式化我有什麼;我總是得到錯誤:

Traceback (most recent call last): 
    File "G:/Python/evaltest.py", line 2, in <module> 
    startLocation = A1 
NameError: name 'A1' is not defined 

我知道,錯誤本身是一個順序的問題,但我不知道我怎麼會叫變量之前我告訴它的字符串?

+0

嘗試'COORDS = File.A1',但使用'eval'是一個壞主意。而且你不需要在全局範圍內使用'global'。 –

+1

你應該花一些時間閱讀你正在做的事情。首先,你的'全球'聲明完全沒有任何影響。其次,你似乎並不瞭解導入作品的方式。第三,__DON'T USE EVAL__ - 對於動態變量訪問,你想使用'globals()'或'getattr'或者一個字典。 – l4mpi

回答

1

使用字典中的文件1,然後就收集它文件2

文件1內容:

d = {'A1':['Plain'], 'A2':['Beach'], 'A3':['Swamp']} 

文件2內容:

from File1 import d 
coords = 'A1' 
location = d[coords] 
1

你可能需要做coords = File1.A1

0

嘗試:

coords = File1.A1 

的原因是,蟒蛇訪問該變量引用的文件名。

相關問題