向打开的python终端发送命令

向打开的python终端发送命令,python,windows,python-3.x,terminal,Python,Windows,Python 3.x,Terminal,目标是通过预执行一些命令来打开python终端。在现实生活中,它加载了一些模块并定义了一些变量,但这里有一个简化版本: from subprocess import Popen, CREATE_NEW_CONSOLE r=Popen("python",creationflags=CREATE_NEW_CONSOLE) r.communicate(input=b"print(2+2)") 使用CREATE_NEW_控制台,因为否则终端窗口不会出现(我从IDE运行代码)。上面的代码打开了一个py

目标是通过预执行一些命令来打开python终端。在现实生活中,它加载了一些模块并定义了一些变量,但这里有一个简化版本:

from subprocess import Popen, CREATE_NEW_CONSOLE

r=Popen("python",creationflags=CREATE_NEW_CONSOLE)
r.communicate(input=b"print(2+2)")
使用CREATE_NEW_控制台,因为否则终端窗口不会出现(我从IDE运行代码)。上面的代码打开了一个python终端窗口,但没有输入。尝试一些变体会阻止窗口出现,如:

r=Popen(["python","print(2+2)"],creationflags=CREATE_NEW_CONSOLE)


那么,我们可以做些什么来解决这个问题呢

这就是环境变量
PYTHONSTARTUP
的作用

见:

另一个选项是使用
-c
-i
开关

C:\>python -i -c "x = 2+2;y=3+3"
>>> x
4
>>> y
6
>>>

第二个和第三个例子很快就开始和结束了。您是否正在尝试通过管道将某些内容连接到stdin,但同时也将stdin连接到终端?如果我正确理解您的问题,主要想法是在不关闭窗口的情况下远程启动多个命令到终端。所有这些都试图实现这一点。我甚至无法通过使用Popen以这种方式让
C:/msys64/usr/bin/cat.exe
将其stdin复制到控制台。我强烈怀疑我链接的问题是相关的。这是否意味着STARTUPINFO可以通过某种方式进行更改,以接受来自通信方法的输入?无论如何,幸运的是,被接受的答案以一种更简单的方式满足了我的需求。
C:\>python -i -c "x = 2+2;y=3+3"
>>> x
4
>>> y
6
>>>