【问题标题】:How to execute some arbitary Python code in InteractiveConsole before jumping into interact在进入交互之前如何在 InteractiveConsole 中执行一些任意 Python 代码
【发布时间】:2025-11-21 09:55:02
【问题描述】:

在 Python 应用程序中,我想通过 InteractiveConsole 类打开 Python REPL。但是之前我跳到交互式 Python 提示符(通过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="")

这总是在pre_commands 的第 3 行出现 SyntaxError: invalid syntax 错误。看起来 push 只理解 一个 完整的命令(如

for i in range(3):
    print(i*i)

而不是另一个命令,尽管InteractiveConsole.push 具有等待命令完成的机制。

如何使用字符串pre_commands 中的任意行复杂和简单的命令来完成这项工作?

【问题讨论】:

  • 在循环之间添加换行符。

标签: python compilation interpreter interactive


【解决方案1】:

看起来像交互式意味着在每个块之后按 Enter/Return 键来执行它。

而 Enter/Return 键也表示换行。 如果我在每次打印后添加新行,您的代码就可以工作,如下所示:

pre_commands = """for i in range(3):
    print(i*i)

for i in range(3):
    print(i*17)

"""

或者, 用 \n 发送每一行,例如使用 console.push(l+'\n') 行。

【讨论】:

  • 谢谢!就是这样。当然!更笼统的:用\n 发送每一行,例如使用console.push(l+'\n') 行。您介意将此添加到您的答案中吗?
  • 添加了您的建议!!
最近更新 更多