Python:如何迭代文件名列表并导入它们?

时间:2013-08-16 16:24:01

标签: python

假设我有一个名为“Files”的文件夹,其中包含许多不同的python文件。

path = "C:\Python27\Files"
os.chdir(path)
filelist = os.listdir(path)
print(filelist)

这给了我一个列表,其中包含“Files”文件夹中所有python文件的名称。

我想将这些文件中的每一个导入一个更大的python程序,一次一个,作为一个模块。这样做的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

__init__.py添加到文件夹,您可以将文件导入为from Files import *

答案 1 :(得分:1)

imp模块有两个功能,它们协同工作以动态导入模块。

import imp
import traceback
filelist = [os.path.splitext(x)[0] for x in filelist] # name of the module w/o extension
for f in filelist: # assume files in directory d
    fp, pathname, description = imp.find_module( f, [d])
    try:
        mod = imp.load_module(x, fp, pathname, description)        
    except:
        print(traceback.format_exc())
    finally:
        # must always close the file handle manually:
        if fp:
            fp.close()

答案 2 :(得分:0)

如果要在运行时导入文件  使用此功能:

def load_modules(filelist):
    modules = []
    for name in filelist:
        if name.endswith(".py"):
            name = os.path.splitext(name)[0]
            if name.isidentifier() and name not in sys.modules:
                try:
                    module = __import__(name)
                    modules.append(module)
                except (ImportError, SyntaxError) as err:
                    print(err)
    return modules