Форум сайта python.su
Хочу необычного.
Функция execfile исполняет последовательно команды из файла на диске.
Меня интересует аналог данной функции но без участия файла.
Все содержимое файла храниться в str-переменной (вместо файла). Хочется как-бы скормить функции execfile не сам файл, а его содержимое в переменной.
Прошу вопросы “Зачем?” не задавать - мне просто нада. Есть ли аналоги подобного.
Если бы содержимое было без циклов\if-ов\классов и т.д. то можно былобы пройтись по переменной в цикле и отправлять все функции exec - но мне нада исполнить полноценный питоновский скрипт.
Помогите.
Отредактировано alexeyvanzhula (Фев. 26, 2013 12:19:41)
Офлайн
exec это не eval
собственно exec Вам и нужен.
Однако все таки задайте себе вопрос зачем? В подавляющем большинстве случаев ни exec ни execfile не нужны.
Отредактировано cutwater (Фев. 26, 2013 14:07:57)
Офлайн
exec это не evalНе сработает. К примеру:
собственно exec Вам и нужен.
string='for a in range(10):\n print a' for line in string: exec( line )
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1 for a in range(10): SyntaxError: unexpected EOF while parsing
Однако все таки задайте себе вопрос зачем? В подавляющем большинстве случаев ни exec ни execfile не нужныИногда бывают необычные ситуации. У меня это сделано в целях конфиденциальности. Нужно скрипт передать из одного питона другому по определенному порту, не используя при этом файловую систему. Но это уже другая история…
Отредактировано alexeyvanzhula (Фев. 26, 2013 14:36:17)
Офлайн
>>> string='for a in range(10):\n print a' >>> exec string 0 1 2 3 4 5 6 7 8 9 >>>
Офлайн
sp3О! Не знал\Туплю. Я был уверен что оно только для однострочного исполнения. Премного благодарен!
Офлайн
Вот было-бы вообще круто если бы такое можно было проделать с инструкцией import (импортировать не из файла)
Офлайн
alexeyvanzhula
Вот было-бы вообще круто если бы такое можно было проделать с инструкцией import (импортировать не из файла)
Отредактировано cutwater (Фев. 26, 2013 17:06:08)
Офлайн
Это модуль из 3.х. Не знаю как там в 3.х, но я использую 2.6, а в нем - в модуле importlib только одна функция import_module, которой, в качестве аргумента, можно передавать имя файла. Это мне не нужно. Если я туплю поправте
Офлайн
Есть еще imp, через который теоретически можно создать модуль, прописать в sys.modules…
Офлайн
cutwater
Есть еще imp, через который теоретически можно создать модуль, прописать в sys.modules…
Офлайн