Найти - Пользователи
Полная версия: Аналог execfile для исполнения не из файла
Начало » Python для новичков » Аналог execfile для исполнения не из файла
1 2
alexeyvanzhula
Хочу необычного.
Функция execfile исполняет последовательно команды из файла на диске.
Меня интересует аналог данной функции но без участия файла.
Все содержимое файла храниться в str-переменной (вместо файла). Хочется как-бы скормить функции execfile не сам файл, а его содержимое в переменной.
Прошу вопросы “Зачем?” не задавать - мне просто нада. Есть ли аналоги подобного.
Если бы содержимое было без циклов\if-ов\классов и т.д. то можно былобы пройтись по переменной в цикле и отправлять все функции exec - но мне нада исполнить полноценный питоновский скрипт.
Помогите.
cutwater
exec это не eval
собственно exec Вам и нужен.

Однако все таки задайте себе вопрос зачем? В подавляющем большинстве случаев ни exec ни execfile не нужны.
alexeyvanzhula
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 не нужны
Иногда бывают необычные ситуации. У меня это сделано в целях конфиденциальности. Нужно скрипт передать из одного питона другому по определенному порту, не используя при этом файловую систему. Но это уже другая история…
sp3
>>> string='for a in range(10):\n  print a'
>>> exec string
0
1
2
3
4
5
6
7
8
9
>>>
exec == зло
alexeyvanzhula
sp3
О! Не знал\Туплю. Я был уверен что оно только для однострочного исполнения. Премного благодарен!
alexeyvanzhula
Вот было-бы вообще круто если бы такое можно было проделать с инструкцией import (импортировать не из файла)
cutwater
alexeyvanzhula
Вот было-бы вообще круто если бы такое можно было проделать с инструкцией import (импортировать не из файла)

Кто мешает? Смотрите в importlib.
alexeyvanzhula
Это модуль из 3.х. Не знаю как там в 3.х, но я использую 2.6, а в нем - в модуле importlib только одна функция import_module, которой, в качестве аргумента, можно передавать имя файла. Это мне не нужно. Если я туплю поправте
cutwater
Есть еще imp, через который теоретически можно создать модуль, прописать в sys.modules…
alexeyvanzhula
cutwater
Есть еще imp, через который теоретически можно создать модуль, прописать в sys.modules…

О, это уже ближе. Буду копать. Спасибо.
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