Я довольно новичок в Python. Я пытаюсь изменить скрипт, чтобы он выполнялся в бесконечном цикле, будет получать строки кода Python с консоли и будет выполнять строки кода Python.Как написать скрипт python, который может выполнять и выполнять команды python?
Я говорю о чем-то, что может сделать следующий пример:
Shell> myconsole.py
> PredefindFunction ("Hello")
This is the result of the PredefinedFunction: Hello!!!
> a=1
> if a==1:
> print "a=1"
a=1
> quit
Shell>
Я попытался с помощью функции Exec(). Он хорошо работает с выполнением функций, которые я определил в моем скрипте, но по какой-то причине он не может действительно выполнить весь код. Я не понимаю его логики. Я получаю:
Shell> myconsole.py
> PredefindFunction ("Hello")
This is the result of the PredefinedFunction: Hello!!!
> a=1
> print a
...
NameError: name 'a' is not defined
Shell>
Может ли кто-нибудь помочь?
Спасибо,
Гур
Привет Кайл,
Вот код:
class cParseTermCmd:
def __init__(self, line = ""):
self.TermPrompt = "t>"
self.oTermPrompt = re.compile("t>", re.IGNORECASE)
self.TermCmdLine = ""
self.line = line
# Check if the TermPrompt (t>) exist in line
def mIsTermCmd (self):
return self.oTermPrompt.match(self.line)
# Remove the term prompt from the terminal command line
def mParseTermCmd (self):
self.TermCmdLine = re.sub(r'%s'%self.TermPrompt, '', self.line, flags=re.IGNORECASE)
exec (self.TermCmdLine)
And I call it in an infinite while loop from:
def GetCmd (self):
line = raw_input('>')
self.TermCmdLine = cParseTermCmd(line)
if self.TermCmdLine.mIsTermCmd():
# Execute terminal command
self.TermCmdLine.mParseTermCmd()
else:
return line
Можете ли вы опубликовать часть кода, который вы сделали до сих пор? Я получаю, что у вас возникают проблемы с этими двумя строками: 'exec ('a = 2'); print (a) ' –
Привет, Кайл, я добавил его к вопросу. Благодаря! –