【发布时间】:2025-04-14 05:45:01
【问题描述】:
目标是打开python终端并预先执行一些命令。在现实生活中它会加载一些模块并定义一些变量,但这里有一个简化版本:
from subprocess import Popen, CREATE_NEW_CONSOLE
r=Popen("python",creationflags=CREATE_NEW_CONSOLE)
r.communicate(input=b"print(2+2)")
使用 CREATE_NEW_CONSOLE,否则终端窗口不会出现(我从 IDE 运行代码)。上面的代码打开了一个 python 终端窗口,但输入没有到达那里。尝试一些变化会阻止窗口出现,例如:
r=Popen(["python","print(2+2)"],creationflags=CREATE_NEW_CONSOLE)
或者
r=Popen("python",creationflags=CREATE_NEW_CONSOLE, stdin=PIPE)
r.communicate(input=b"print(2+2)")
那么可以做些什么来解决这个问题呢?
【问题讨论】:
-
嗯,第二个和第三个示例打开和关闭的速度非常快。您是否尝试将某些内容通过管道传输到标准输入,但也将标准输入连接到终端?
-
如果我理解你的问题,主要思想是在不关闭窗口的情况下远程启动多个命令到终端。以上所有都试图实现这一目标。
-
我什至无法让
C:/msys64/usr/bin/cat.exe以这种方式使用 Popen 将其标准输入复制到控制台。我强烈怀疑我链接的问题是相关的。 -
这是否意味着可以以某种方式更改 STARTUPINFO 以接受来自通信方法的输入?无论如何,幸运的是,接受的答案以更简单的方式完成了我想要的。
标签: python windows python-3.x terminal