2015-06-08 2 views
1

Мне нужно написать функцию, которая просматривает каталоги, ищущие файлы, которые заканчиваются на _prj.py, а затем извлекает из нее некоторые списки. То, как я делаю это сейчас, - это использовать os.path.walk, а затем импортировать. Мой код выглядит следующим образом:Python Поиск файлов и их импорт

for py_file in files: 
    if py_file.endswith("_prj.py"): 
     print py_file[:-3] 
     module = py_file[:-3] 
     import module 

Однако я получаю сообщение об ошибке импорта:

ImportError: No module named module 

Я думаю, что я понимаю, почему, я просто не знаю, как я хотел бы сделать импорт заявление работу. Есть ли способ заставить переменную модуля читать как имя файла вместо «модуля»?

+0

[ '__import__ (module_name)'] (https://docs.python.org/2/ library/functions.html #__ import__), хотя вы, вероятно, ошибаетесь. См. Также [importlib] (https://docs.python.org/2/library/importlib.html). –

+0

Вы пытаетесь что-то похожее на 'import 'math", и это, несомненно, вернет ошибку. – ZdaR

+0

Как и я не должен импортировать? – Jpwang

ответ

0

Правильный путь импорта модуля по имени строка, используя другой модуль, известный как importlib

import importlib 

math_module = importlib.import_module("math") 

print math_module.sqrt(25) 
>>> 5.0 
+0

Если я использую importlib, должен ли модуль находиться в том же каталоге? Если это действительно так, делает ли тот факт, что я использую 'os.path.walk', чтобы добраться до каталога, в котором находятся модули? – Jpwang

+0

будет работать так же, как и оператор 'import', если вы можете импортировать файл python с помощью инструкции' import', а затем вы можете импортировать его с помощью importlib. – ZdaR

Смежные вопросы