2013-08-16 3 views
0

Предположим, у меня есть папка под названием «Файлы», которая содержит несколько разных файлов 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 
Смежные вопросы