创建一个新的终端/ shell窗口以简单地显示文本

时间:2009-05-15 02:16:21

标签: python shell

我想管道[编辑:实时文本]几个子进程的输出(有时是链接的,有时是并行的)到单个终端/ tty窗口,它不是活动的python shell(可以是IDE,命令行) ,或使用tkinter的运行脚本)。 IPython不是一个选择。我需要标准安装附带的东西。喜欢与操作系统无关的解决方案,但需要在XP / Vista上运行。

如果你愿意,我会发布我已尝试过的内容,但这很令人尴尬。

3 个答案:

答案 0 :(得分:2)

Unix中的一个很好的解决方案是命名管道。我知道你问过Windows,但在Windows中可能有类似的方法,或者这可能对其他人有帮助。

终端1上的

mkfifo /tmp/display_data
myapp >> /tmp/display_data
终端2(bash)上的

tail -f /tmp/display_data

编辑更改了终端2命令,使用“tail -f”而不是无限循环。

答案 1 :(得分:0)

你说“管道”所以我假设你正在处理子进程的文本输出。一个简单的解决方案可能就是将输出写入文件?

e.g。在子流程中:

  1. 重定向输出%TEMP%\output.txt
  2. 退出时,将output.txt复制到主进程正在观看的目录中。
  3. 在主要过程中:

    1. 每秒检查新文件的目录。
    2. 找到文件后,处理并删除它们。
    3. 您可以在输出文件名中对子进程名称进行编码,以便了解如何处理它。

答案 2 :(得分:0)

你可以创建一个生产者 - 客户系统,在这里通过套接字插入行(这里没什么特别的)。 客户将是一个多线程套接字服务器,用于监听连接并将所有行放入 Queue 。在单独的线程中,它将从队列中获取项目并将其打印在控制台上。该程序可以作为外部工具从cmd控制台或eclipse控制台运行,没有太多麻烦。

从您的角度来看,它应该是实时的。作为奖励,您可以将生产者和客户放在不同的盒子上。生产者甚至可以组成一个网络。

可以找到一些使用python进行套接字编程的示例here。查看here获取tcp echoserver示例,查看here获取tcp“hello world”套接字客户端。

还有一个Windows扩展,可以使用命名管道。

在linux上(可能是cygwin?)你可以 tail -f named-fifo

祝你好运!