繁体   English   中英

匹配模式的Python模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM