2013-08-16 169 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