Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2011 14:39:39

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

загрузка кода в цикле

Всем привет.

Скажите, возможно ли(и если да - то как?) подгружать код в основную программу?

for it in [1,2,3,4]:
import it,'.py'
Как правильно такое записать?

Второй вопрос: Если в подгружаемом коде у меня будут записаны классы содержащие члены, могу ли я обычным образом использовать их?
def class1(self):
opt1='some value 1'
opt2='some value 2'
Благодарен.



Офлайн

#2 Окт. 23, 2011 15:38:38

lavrton
От:
Зарегистрирован: 2010-11-13
Сообщения: 35
Репутация: +  1  -
Профиль   Адрес электронной почты  

загрузка кода в цикле

Это?

for it in [1,2,3,4]:
exec('import %s_mod'%(str(it)))
Но это очень плохая практика.



Офлайн

#3 Окт. 23, 2011 16:12:55

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

загрузка кода в цикле

Нет. Мне не нужно выполнять код из подгружаемых скриптов. Да и выполнять там нечего. В тех скриптах определен один класс, но в каждом из скриптов его члены инициализированы разными значениями. При подгрузке же, в основной программе, я использую тот класс в качестве параметров для алгоритмов в основной программе. Хотя, возможно я не тем путем пошел… В общем, есть самописная система тестирования некоторого приложения написанная на bash. Система была написана очень давно, и для нынешних наборов тестов, она не подходит т.к. усложнились тесты, усложнились требования, усложнился процесс создания результатов тестов. Все это дело выполнялось bash`ем %)
По этому, я решил переписать ее на пайтон. А в подгружаемых скриптах предполагал хранить аргументы/данные для каждого теста. В таком случае, при итерации по списку тестов в for, подгружались бы данные из одноименного скрипта с данными для одноименного теста. Как-то так я представлял себе всю это делегу :)

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


Спасибо.



Отредактировано (Окт. 23, 2011 16:13:43)

Офлайн

#4 Окт. 23, 2011 17:00:14

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

загрузка кода в цикле

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)

Офлайн

#5 Окт. 23, 2011 17:04:23

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

загрузка кода в цикле

dimabest, спасибо. то что нужно. http://docs.python.org/py3k/library/json.html



Офлайн

#6 Окт. 24, 2011 18:18:52

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

загрузка кода в цикле

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

По второму вопросу: импортированные таким образом модули можно использовать как обычно.



Офлайн

#7 Окт. 28, 2011 19:12:27

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

загрузка кода в цикле

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

По второму вопросу: импортированные таким образом модули можно использовать как обычно.
спасибо. буду знать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version