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