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...
感谢大家的关注。
我正在从一些文件中导入变量。到目前为止,我使用了命令:
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...
感谢大家的关注。