打开2个终端并在Python中打印2个不同的消息

时间:2014-09-13 16:57:43

标签: python linux python-2.7 terminal

我是新的python(ver 2.7)程序员,我有一个问题如何打开2个终端和输出 不同的信息。

该程序的主要任务是打开2个终端并输出不同的消息。 现在,我有3个以下文件

  1. test.py - 它是打开2个终端并调用不同python 2文件的主文件
  2. print1.py - 这是简单的1行代码,用于打印"这是第1个终端"
  3. print2.py - 与print1.py相同。它输出"这是第二个终端"
  4. 目前,我的test.py有以下代码:

    import subprocess
    subprocess.call(['gnome-terminal','-x','python print1.py'])
    subprocess.call(['gnome-terminal','-x','python print2.py'])
    

    当我执行程序时,它打开两个终端,它们都告诉"为这个终端创建子进程时出错。无法执行子项" 。 然后,我试图写print1 / print2.py的完整路径,但它仍然给出相同的错误,我陷入了困境。 请一些人给我一些建议来解决这个错误。

1 个答案:

答案 0 :(得分:1)

您需要将python和文件路径指定为分隔项。否则,python print1.py将被解释为程序名称,而不是python

import subprocess
proc1 = subprocess.Popen(['gnome-terminal', '-x', 'python', 'print1.py'])
proc2 = subprocess.Popen(['gnome-terminal', '-x', 'python', 'print2.py'])
proc1.wait()
proc2.wait()

注意:我使用call更改了Popencall等待程序终止;在第一个程序终止之前,第二个终端不会被执行。

<强>更新

BTW,除非脚本在打印后没有暂停,否则gnome-terminal将在python程序终止后立即关闭。

如果在程序终止后需要shell提示符,请在每个文件的末尾添加以下行(print1.pyprint2.py):

import os
os.execv('/bin/sh', ['sh'])