Python:在import all(*)中使用字符串变量

Python:在import all(*)中使用字符串变量,python,python-3.x,python-import,Python,Python 3.x,Python Import,我正在从一些文件导入变量。到目前为止,我使用了以下命令: from vars1 import * 其中vars1.py是文件名。然后,对于每个vars.py文件,我必须手动更改文件名并重新运行代码 我希望能够循环到文件夹中的所有文件,这样我就可以一个接一个地导入它们,一次处理每个文件的变量,方法如下: import glob var_files = glob.glob('./vars*') for var_file in var_files: from var_file imp

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

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语句中使用一个变量,它将返回
ModuleNotFoundError:No module name'var\u file'
。(我怀疑这样的glob不起作用,我必须使用一些正则表达式才能使它起作用,但你明白了)

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

import importlib      
variable='vars1'   
__import__(variable)  
# or alternatively
importlib.import_module(variable)
这两种方法都不会将导入的变量保存在内存中,除非我将导入分配给其他变量(例如
y=\uuu import\uuu(variable)
),然后将其用作访问变量的前缀(例如
y.volume
),我希望避免这种情况


有什么方法可以做到这一点吗?

根据@swagless\u 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...

感谢大家的关注。

在vars1中进行
y=\uuuu导入(…)
,然后对attr进行
,val(y)。items():…
…?您是否在vars1中添加了if
\uu name=“uuuuuu main”:
?在一堆文件中循环并导入它们的所有变量似乎…可疑…?与“恶意”不同,但与“可能有更好的解决方案来解决您试图做的任何事情”一样……那么您的模拟应该在一个带有参数的函数中定义,这些参数可以在文件中定义,可能最好是一些文本格式,如YAML,它非常接近纯Python变量,您可以将这些值从文件加载到dict中,并使用
my_simulation(**kwargs)
..将它们作为参数传递到您的函数中?至少您可以将模块作为对象导入(
y=\u import(..)\uuuuuu
),然后其中定义的所有变量都是该对象上的属性。最糟糕的情况是,您以编程方式从中生成dict,并将其作为
**kwargs
传递到模拟函数中。不需要将它们提取为单个变量。