Python 从多个文件导入变量

Python 从多个文件导入变量,python,import,Python,Import,我有一个实验的数据,每次试验的数据都保存在一个带有一些变量的python文件中。每个试用版都保存在不同的目录中,但文件名相同。我的主要目标是解析这些数据 现在,我可以使用\uu import\uu导入单个文件,方法是执行sys.path.append,然后导入该文件 但是,即使我执行sys.path.remove操作,然后更改路径并尝试导入一个新文件(相同的dame,不同的目录),原始文件也会被记住。我已尝试使用del module\u name删除第一个文件 有没有一个标准的方法可以做到这一点

我有一个实验的数据,每次试验的数据都保存在一个带有一些变量的python文件中。每个试用版都保存在不同的目录中,但文件名相同。我的主要目标是解析这些数据

现在,我可以使用
\uu import\uu
导入单个文件,方法是执行
sys.path.append
,然后导入该文件

但是,即使我执行
sys.path.remove
操作,然后更改路径并尝试导入一个新文件(相同的dame,不同的目录),原始文件也会被记住。我已尝试使用
del module\u name
删除第一个文件


有没有一个标准的方法可以做到这一点?我可以使用
exec
,但我不希望这样做。

模块存储在名为
sys.Modules
的dict中,当您导入它们时

因此,当您再次调用import XXX时,它将从缓存加载

删除缓存的最简单方法是从
sys.modules
中弹出缓存

但我想建议另一种方式:

使用
importlib
lib

import importlib.util

# load .py file info:
spec = importlib.util.spec_from_file_location(name_of_your_file_without_ext,
                                              path_of_your_file)
# create module:
module = importlib.util.module_from_spec(spec)
# init module:
spec.loader.exec_module(module)
这将将模块缓存在
sys.modules


然后你可以做你想做的任何事情
模块

有标准的方法吗?将所有python数据文件放在一个目录中,并将该目录添加到路径中。每个试用版都保存为不同的文件名。。。尝试导入一个新文件(相同的文件,不同的目录)。这两种说法不一致。很抱歉,我指的是不同的目录,相同的名称。你应该找到一种更好的方法来序列化数据。据我所知,你滥用模块系统的目的是为了获得很少的明显收益。只需使用
pickle
shelve
甚至JSON即可。事实上,我想说,如果您真的想继续使用这种方法,那么最好只使用
exec
。这比以神秘的方式摆弄进口要好得多。是的,我同意数据的格式并不理想。它是PETSc中logview的输出。我找不到更好的方法来保存输出,所以如果有人有建议那就太好了。