Python: 在全部导入中使用字符串变量 (*)

Python: use string variable in import all (*)

我正在从一些文件中导入变量。到目前为止,我使用了命令:

from vars1 import *

其中 vars1.py 是文件名。然后对于每个 vars.py 文件,我必须手动更改文件名并重新运行代码。

我希望能够循环访问文件夹内的所有文件,以便我可以一个一个地导入它们并一次处理每个文件的变量,方法如下:

import glob    
var_files = glob.glob('./vars*')
for var_file in var_files:
    from var_file import *
    # .....rest of the code working with the imported variables....

但是如果我尝试在 import 语句中使用变量 returns ModuleNotFoundError: No module named 'var_file'。 (我怀疑这样的 glob 不起作用,我必须使用一些正则表达式才能让它起作用,但你明白了)

到目前为止,我还没有找到与 import * 等效的方法。在我见过的情况下,每次我需要使用其中一个导入变量时都必须使用前缀,这会导致更重的符号和代码中的大量更改。到目前为止我试过:

import importlib      
variable='vars1'   
__import__(variable)  
# or alternatively
importlib.import_module(variable)

除非我将导入分配给其他一些变量(例如y=__import__(variable)),然后将其用作访问变量的前缀(例如y.volume,否则这些都不会将导入的变量保留在内存中),我想避免这种情况。

有办法吗?

根据@swagless_monk 的评论,我开始研究 python 的内置函数,发现这可以完成工作:

import glob
var_files = glob.glob('./vars*') 
for var_file in var_files: 
     o=open(var_file)  
     r=o.read()       
     exec(r) 
    
     # .....rest of the code working with the imported variables...

感谢大家的关注。