【问题标题】:Open 2 terminals and print 2 different message in Python在 Python 中打开 2 个终端并打印 2 条不同的消息
【发布时间】:2014-11-07 15:35:34
【问题描述】:

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

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

  1. test.py -- 它是假设打开 2 个终端并调用不同的 python 2 文件的主文件
  2. print1.py -- 这是简单的 1 行代码,打印“这是第一个终端”这一行
  3. print2.py -- 与 print1.py 相同。它输出“这是第二个终端”

目前,我的 test.py 有以下代码:

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

当我执行程序时,它会打开两个终端,它们都告诉“为该终端创建子进程时出错。执行子进程失败”。 然后,我尝试编写 print1/print2.py 的完整路径,但它仍然给出相同的错误,我被困在那里。 请一些人给我一些建议来解决这个错误。

【问题讨论】:

标签: python linux python-2.7 terminal


【解决方案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 等待程序终止;在第一个程序终止之前,不会执行第二个终端。

更新

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

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

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

【讨论】:

  • 感谢您回答我的问题。根据您的建议,现在没有错误出现。但是,您的 os.execv 似乎无法正常工作...然后,我在两个打印文件中都编写了此代码以进行测试: print "this is first terminal" while 1: var = raw_input(" Please enter something:) print var When I执行程序,它首先打开终端,然后立即关闭终端。你能给我一些建议吗?
  • os.execv('/bin/sh', ['sh']) 对我有用。请单独运行python print1.py,如果您有任何错误回溯,请告诉我。
  • python print1.py 完美运行。它打印出消息然后它启动shell。因此我不相信 print1.py 有问题。但是当我尝试从 test.py 执行时,它会启动新终端然后立即关闭它。我尝试同时使用 Popen 和 call 但似乎有同样的问题。
  • @Shin,如果你把input() 放在脚本末尾会怎样?
  • 它仍然有同样的问题。从终端输入 gnome-terminal -x python print1.py 可以正常工作。但是当我使用 subprocess.call / Popen 时,它有问题
猜你喜欢
  • 1970-01-01
  • 2021-05-11
  • 2020-06-08
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 2020-05-14
  • 1970-01-01
相关资源
最近更新 更多