Python -导入目录树中的所有文件



我想在目录树中导入所有python文件,即如果我们有以下目录结构:

tests/
tests/foo.py
tests/subtests/bar.py

(假设树的深度是任意的)

我想做import_all('tests'),加载foo.pybar.py。使用通常的模块名称(tests.footests.subtests.bar)导入会很好,但不是必需的。

我的实际用例是,我有一大堆包含django表单的代码;我想确定哪些表单使用特定的字段类。我对上面代码的计划是加载我的所有代码,然后检查所有加载的类以查找表单类。

在python 2.7中有什么好的,简单的方法来完成这个?

这是一个使用os.walk的粗略版本:

import os
prefix = 'tests/unit'
for dirpath, dirnames, filenames in os.walk(prefix):
    trimmedmods = [f[:f.find('.py')] for f in filenames if not f.startswith('__') and f.find('.py') > 0]
    for m in trimmedmods: 
        mod = dirpath.replace('/','.')+'.'+m
        print mod
        __import__(mod)
import os
my_dir = '/whatever/directory/'
files = [os.path.join(dirpath, f) for dirpath, dirnames, files in os.walk(my_dir) for f in files if f.endswith('.py')]
modules = [__import__(os.path.splitext(f)[0],globals(),locals(),[],-1) for f in files]

相关内容

  • 没有找到相关文章

最新更新