检查导入文件中是否存在列表中的变量



我正在尝试构建一个简单的迭代代码,通过变量列表并从文件中检查它。

例如,它可以有两个变量foo1foo2,我可以做以下操作

try:
from file import foo1
except ImportError:
foo1 = None
try:
from file import foo2
except ImportError:
foo2 = None

…等等。然而,现在我的变量列表变长了。是否有更简单的方法将我的变量(即foo1,foo2,foo3等)放入列表中,并尝试查看它是否存在于"文件"中;而不是重复这个试着抓住的过程?

我尝试了以下操作,但它不起作用,特别是当foo1或foo2确实存在时。

my_list = ['foo1', 'foo2']
for listElem in my_list:
try:
from file import listElem
except ImportError:
print ("Can't find",listElem,"in file")

感谢

你可以这样做:

import file
my_list = ['foo1', 'foo2']
for listElem in my_list:
if not (value := getattr(file, listElem, None)):
print ("Can't find",listElem,"in file")
globals()[listElem] = value

globals()是一个包含所有顶级名称的字典。我们在上面的代码片段中所做的是使用my_list中的名称创建全局变量。

最新更新