2017-08-05 254 views
0

我有一个问题,我需要编写一个python脚本,它基本上打开一个终端窗口并启动一个节点js服务器,然后打开另一个终端窗口并启动一个java程序中。从python脚本的多个终端窗口运行多个命令

如果我运行两个subprocess.call()函数,它们在相同的终端窗口中运行。

有没有一种方法可以做到这一点?

谢谢:)

回答

0

使用subprocess.Popen:

这将为它的每个僵尸和运行程序新窗口。 python3的-i选项是在TestBot3.py脚本完成后使窗口交互。

from subprocess import Popen, PIPE 

bot1 = Popen(["lxterminal", "-e", "python3", "-i", "TestBot1.py"], stdout=PIPE, stderr=PIPE, stdin=PIPE) 
bot2 = Popen(["lxterminal", "-e", "python3", "-i", "TestBot2.py"], stdout=PIPE, stderr=PIPE, stdin=PIPE) 
bot3 = Popen(["lxterminal", "-e", "python3", "-i", "TestBot3.py"], stdout=PIPE, stderr=PIPE, stdin=PIPE) 

或者你可以使用from subprocess import call

call(["python3", "TestBot1.py"]) 
call(["python3", "TestBot2.py"]) 
call(["python3", "TestBot3.py"]) 

要打开一个终端为每个你可以使用GNOME终端与-e执行参数传递给终端内部此选项:

call(['gnome-terminal', '-e', "python3 TestBot1.py"]) 
call(['gnome-terminal', '-e', "python3 TestBot2.py"]) 
call(['gnome-terminal', '-e', "python3 TestBot3.py"]) 
+0

因此,如果我想使用Popen选项,并且我想要执行的这两个命令是例如“cd Desktop && npm start”和“cd Desktop/folder && mvn exec:exec”,我该如何实现?我对这种方式并不是非常有经验,所以我不清楚:)谢谢 – lauderdice

+0

您可以指定程序文件的路径,例如“TestBot1.py”与您的目录“Desktop/test/TestBot1.py”。 –