我正在尝试从所有具有相同名称的单独文件中验证多个功能。

因此,请考虑我有一个目录目录:
目录1
其中有
s1,s2,s3,...,sn都是目录,每个目录都包含一个名为submitting.py的文件。直到运行时,我才知道s1到sn是什么。

在每个submitting.py中,都有函数f1至fm。

我想创建一个执行f1到fm的脚本,并通过sn的submitt.py文件为每个s1打印它们的输出。

我想可以将每个目录中的每个submitting.py文件导入,但是问题是每个文件都具有相同的名称。同样,直到运行时才知道s1到sn。显然,我可以使用os.listdir函数确定s1到sn。

关于通过os.listdir获取目录名称后如何从两个不同的文件调用f1的任何想法吗?

最佳答案

使用imp可以做到这一点。

>>> import os, imp
>>> dirs = os.listdir('.')
>>> dirs
['s1', 's2']
>>> modules = {d: imp.load_source(d, d + '/submission.py') for d in dirs}
>>> modules
{'s1': <module 's1' from 's1/submission.py'>,
 's2': <module 's2' from 's2/submission.py'>}


然后,例如,要在子目录f3中包含的submission.py模块中调用函数s2,它将是:

modules['s2'].f3()

关于python - 从python中的多个脚本调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36604641/

10-12 15:54