2013-08-16 118 views
0

假设我有一个名为“Files”的文件夹,其中包含许多不同的python文件。Python:你如何遍历文件名列表并导入它们?

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

这给了我一个包含所有文件夹“文件”在Python文件的名称的列表。

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

+1

考虑到文件夹转换成一个包,否则,你可以使用'importlib'模块。 –

+1

是的,这通常是一个坏主意。请参阅关于打包的文档:http://docs.python.org/2/tutorial/modules.html#packages – reptilicus

回答

1

添加__init__.py到文件夹,也可以将文件作为from Files import *

1

小鬼模块具有共同dynmically导入模块两种功能。

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() 
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