[英]Python modules matching a pattern
我想为单个模块中的一组模块( invenio.webtag*
: invenio.webtag*
)运行doctest
,但是我需要一种方法来导入所有这些(也只有这些)模块并运行doctest.testmod()
在所有这些上。 有任何想法吗?
编辑 :解决方案:
import doctest
import glob
import os
import pkgutil
pkgpath = pkgutil.extend_path([], 'invenio')[0]
for module_path in glob.glob(pkgpath + '/webtag*.py'):
module_name = os.path.splitext(os.path.basename(module_path))[0]
module = __import__('invenio.' + module_name)
doctest.testmod(module)
可以使用__import__
来动态加载模块,例如
my_module = __import__("mymodule")
然后传递给testmod
例如
doctest.testmod(my_module)
假设您可以使用glob.glob或从os.listdir过滤结果来构建匹配模块的列表,那么您应该可以使用这种方法。
更新:
要导入invenio.webtag
尝试使用fromlist :
module = __import__('invenio.webtag', globals(), locals(), ['invenio'], -1)
请参阅此文档以获取解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.