Найти - Пользователи
Полная версия: загрузка кода в цикле
Начало » Python для новичков » загрузка кода в цикле
1
pupkin2
Всем привет.

Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?
for it in [1,2,3,4]:
import it,'.py'
Как правильно такое записать?

Второй вопрос: Если в подгружаемом коде у меня будут записаны классы содержащие члены, могу ли я обычным образом использовать их?
def class1(self):
opt1='some value 1'
opt2='some value 2'
Благодарен.
lavrton
Это?
for it in [1,2,3,4]:
exec('import %s_mod'%(str(it)))
Но это очень плохая практика.
pupkin2
Нет. Мне не нужно выполнять код из подгружаемых скриптов. Да и выполнять там нечего. В тех скриптах определен один класс, но в каждом из скриптов его члены инициализированы разными значениями. При подгрузке же, в основной программе, я использую тот класс в качестве параметров для алгоритмов в основной программе. Хотя, возможно я не тем путем пошел… В общем, есть самописная система тестирования некоторого приложения написанная на bash. Система была написана очень давно, и для нынешних наборов тестов, она не подходит т.к. усложнились тесты, усложнились требования, усложнился процесс создания результатов тестов. Все это дело выполнялось bash`ем %)
По этому, я решил переписать ее на пайтон. А в подгружаемых скриптах предполагал хранить аргументы/данные для каждого теста. В таком случае, при итерации по списку тестов в for, подгружались бы данные из одноименного скрипта с данными для одноименного теста. Как-то так я представлял себе всю это делегу :)

Сейчас же, я подумываю аргументы/данные вынести в .json файлы, и подгружать их.
В состав пайтона входит какой-нить стандартный json парсер? Или может быть Вы можете порекомендовать какой-нить сторонний?


Спасибо.
dimabest
import json

Для конфигов мне больше остальных нравится YAML http://www.opennet.ru/base/dev/yaml.txt.html
В стандартной библиотеке пока нет, однако ставится легко:

easy_install pyyaml

или

sudo apt-get install python-yaml
pupkin2
dimabest, спасибо. то что нужно. http://docs.python.org/py3k/library/json.html
Yurietc
pupkin2
Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?
Я делаю с помощью glob и __import__ :
moduleNames = [i.split('.')[0] for i in glob('*.py')]
modulesList = map(__import__, moduleNames)
Так импортируются в список все питоновские файлы с текущей директории.

По второму вопросу: импортированные таким образом модули можно использовать как обычно.
pupkin2
Yurietc
pupkin2
Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?
Я делаю с помощью glob и __import__ :
moduleNames = [i.split('.')[0] for i in glob('*.py')]
modulesList = map(__import__, moduleNames)
Так импортируются в список все питоновские файлы с текущей директории.

По второму вопросу: импортированные таким образом модули можно использовать как обычно.
спасибо. буду знать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB