Форум сайта python.su
1
Всем привет.
Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?
for it in [1,2,3,4]:
import it,'.py'
def class1(self):
opt1='some value 1'
opt2='some value 2'
Офлайн
1
Это?
for it in [1,2,3,4]:
exec('import %s_mod'%(str(it)))
Офлайн
1
Нет. Мне не нужно выполнять код из подгружаемых скриптов. Да и выполнять там нечего. В тех скриптах определен один класс, но в каждом из скриптов его члены инициализированы разными значениями. При подгрузке же, в основной программе, я использую тот класс в качестве параметров для алгоритмов в основной программе. Хотя, возможно я не тем путем пошел… В общем, есть самописная система тестирования некоторого приложения написанная на bash. Система была написана очень давно, и для нынешних наборов тестов, она не подходит т.к. усложнились тесты, усложнились требования, усложнился процесс создания результатов тестов. Все это дело выполнялось bash`ем %)
По этому, я решил переписать ее на пайтон. А в подгружаемых скриптах предполагал хранить аргументы/данные для каждого теста. В таком случае, при итерации по списку тестов в for, подгружались бы данные из одноименного скрипта с данными для одноименного теста. Как-то так я представлял себе всю это делегу :)
Сейчас же, я подумываю аргументы/данные вынести в .json файлы, и подгружать их.
В состав пайтона входит какой-нить стандартный json парсер? Или может быть Вы можете порекомендовать какой-нить сторонний?
Спасибо.
Отредактировано (Окт. 23, 2011 16:13:43)
Офлайн
0
import json
Для конфигов мне больше остальных нравится YAML http://www.opennet.ru/base/dev/yaml.txt.html
В стандартной библиотеке пока нет, однако ставится легко:
easy_install pyyaml
или
sudo apt-get install python-yaml
Отредактировано (Окт. 23, 2011 17:05:23)
Офлайн
1
dimabest, спасибо. то что нужно. http://docs.python.org/py3k/library/json.html
Офлайн
0
pupkin2Я делаю с помощью glob и __import__ :
Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?
moduleNames = [i.split('.')[0] for i in glob('*.py')]
modulesList = map(__import__, moduleNames)Офлайн
1
Yurietcспасибо. буду знать.pupkin2Я делаю с помощью glob и __import__ :
Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?Так импортируются в список все питоновские файлы с текущей директории.moduleNames = [i.split('.')[0] for i in glob('*.py')]
modulesList = map(__import__, moduleNames)
По второму вопросу: импортированные таким образом модули можно использовать как обычно.
Офлайн