[在Python应用程序中,我想通过InteractiveConsole
类打开Python REPL。但是之前我跳进了交互式Python提示符(通过InteractiveConsole
方法),我想执行一些以字符串形式给出的命令。这里是一个最小的例子:
interact
[这总是在pre_commands = """for i in range(3):
print(i*i)
for i in range(3):
print(i*17)
"""
console = code.InteractiveConsole()
for l in pre_commands.splitlines():
console.push(l)
console.interact(banner="", exitmsg="")
的第三行出现SyntaxError: invalid syntax
错误。看起来像push仅了解one完整命令(如
pre_commands
而不是其他命令,尽管for i in range(3):
print(i*i)
具有等待命令完成的机制。
如何使用字符串InteractiveConsole.push
中的任意行的复杂和简单命令来完成此工作?
看起来像交互式,意味着在每个块之后都按Enter / Return键来执行它。
并且Enter / Return键也表示换行。如果我在每次打印后添加新行,如下所示,您的代码将起作用:
pre_commands
OR,向每行发送\ n,例如行console.push(l +'\ n')。