Я пытаюсь проверить несколько функций из отдельных файлов все с теми же именами в Python 3.Проверка нескольких модулей с Python3
Итак, рассмотрим У меня есть каталог каталогов: dir1
который имеет s1
, s2
, s3
, ..., sn
, которые все являются каталогами, и каждый из них содержит файл с именем submission.py
. Я не знаю, что s1
через sn
до запуска.
В каждом submission.py
есть функции f1
по fm
.
Я хотел бы создать скрипт, который выполняет f1
через fm
и выводит свою продукцию для каждого s1
через submission.py
файл sn
«s.
Я хотел бы думать, что я могу импортировать каждый файл submission.py
в каждый каталог, но проблема в том, что каждый файл имеет то же имя. Кроме того, s1
до sn
неизвестно до времени выполнения. Очевидно, что я могу определить s1
через sn
с использованием функции os.listdir()
.
Любая идея о том, как я могу позвонить f1
из двух разных файлов после получения названий каталогов через os.listdir()
и os.path.isdir()
?
Другой плакат предложил это для 2.7:
Это возможно с помощью
imp
.
import os, imp
dirs = os.listdir('.')
modules = {d: imp.load_source(d, d + '/submission.py') for d in dirs}
Затем, чтобы вызвать функцию f3
в submission.py
модуля, содержащегося в подкаталоге s2
, например, было бы: modules['s2'].f3()
.
Это было бы идеальным решением. Может ли кто-нибудь предложить аналогичное решение в Python 3.4 или 3.5?
Посмотрите на [importlib] (https: //docs.python.org/3/library/importlib.html) – SiHa
Идти сидеть. Можете ли вы предложить, как я буду использовать его? –
Документация, которую я связывал с ее довольно обширной. Почему бы просто не попробовать и посмотреть, как вы справляетесь? Часть модулей, имеющих одинаковое имя, не имеет значения, если они импортируются последовательно. Каждый последующий импорт будет просто перезаписывать предыдущий в пространстве имен Python. – SiHa