Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python3验证多个模块_Python_Python 3.x_Python Module - Fatal编程技术网

使用Python3验证多个模块

使用Python3验证多个模块,python,python-3.x,python-module,Python,Python 3.x,Python Module,我正在尝试验证来自不同文件的多个函数,这些文件在Python3中都具有相同的名称 P> >我想我有一个目录目录: DR1,它有 S1, S2, S3,…, Sn/COD>这都是目录,每个都包含一个名为“代码>提交.Py < /C>”的文件。直到运行时,我才知道s1到sn是什么 在每个submission.py中,都有函数f1到fm 我想创建一个脚本,通过fm执行f1,并通过sn的submission.py文件打印每个s1的输出 我想我可以导入每个目录中的每个submission.py文件,但问

我正在尝试验证来自不同文件的多个函数,这些文件在Python3中都具有相同的名称

<> P> >我想我有一个目录目录:<代码> DR1,它有<代码> S1<代码>,<代码> S2,<代码> S3,…,<代码> Sn/COD>这都是目录,每个都包含一个名为“代码>提交.Py < /C>”的文件。直到运行时,我才知道
s1
sn
是什么

在每个
submission.py
中,都有函数
f1
fm

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

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

在通过
os.listdir()
os.path.isdir()
获取目录名后,我如何从两个不同的文件调用
f1

另一张海报建议使用2.7:

这可以使用
imp

然后,要调用子目录
s2
中包含的
submission.py
模块中的函数
f3
,例如:
模块['s2'].f3()


这将是一个完美的解决方案。有人能推荐Python 3.4或3.5中的类似解决方案吗?

importlib
不支持导入给定的完整路径名,但支持从包导入。
您可以通过在目录中添加一个空白的
\uuuu init\uuuuu.py
将每个子目录、
s1
s2
等制作成一个包,然后使用importlib

因此,在每个目录中,都有
\uuu init\uuuuuuuuuuuupy
submission.py

那么下面的示例代码应该可以工作:

import importlib
for pkg in ('s1','s2'):
    globals()['submission'] = importlib.import_module(pkg+'.submission',pkg)
    submission.f1()
    submission.f2()
    # etc...
请注意,我使用的是Python2,它只有
importlib.import_module()
,Python3有更多的功能,但我希望上述功能仍然有效


也不是说包含
s1
等的目录必须位于PYTHONPATH中。

importlib
不支持导入给定的完整路径名,但支持从包导入。
您可以通过在目录中添加一个空白的
\uuuu init\uuuuu.py
将每个子目录、
s1
s2
等制作成一个包,然后使用importlib

因此,在每个目录中,都有
\uuu init\uuuuuuuuuuuupy
submission.py

那么下面的示例代码应该可以工作:

import importlib
for pkg in ('s1','s2'):
    globals()['submission'] = importlib.import_module(pkg+'.submission',pkg)
    submission.f1()
    submission.f2()
    # etc...
请注意,我使用的是Python2,它只有
importlib.import_module()
,Python3有更多的功能,但我希望上述功能仍然有效


也不是说包含
s1
等的目录必须驻留在PYTHONPATH中。

看一下,然后再看一下。你能建议我如何使用它吗?我链接到它的文档非常广泛。为什么不试试看你过得怎么样?关于所有模块都具有相同名称的部分与它们是否按顺序导入无关。每个后续导入都将覆盖Python命名空间中的前一个导入。你能建议我如何使用它吗?我链接到它的文档非常广泛。为什么不试试看你过得怎么样?关于所有模块都具有相同名称的部分与它们是否按顺序导入无关。每个后续导入都将覆盖Python命名空间中的前一个导入。