Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建新的终端/外壳窗口以简单显示文本_Python_Shell - Fatal编程技术网

Python 创建新的终端/外壳窗口以简单显示文本

Python 创建新的终端/外壳窗口以简单显示文本,python,shell,Python,Shell,我想通过管道[edit:real-time text]将几个子流程(有时链接,有时并行)的输出传输到一个终端/tty窗口,该窗口不是活动的python shell(无论是IDE、命令行还是使用tkinter的运行脚本)。IPython不是一个选项。我需要标准安装附带的东西。更喜欢操作系统不可知的解决方案,但需要在XP/Vista上工作 如果您愿意,我将发布我已经尝试过的内容,但这很尴尬。您说的是“管道”,所以我假设您正在处理子流程的文本输出。一个简单的解决方案可能是只将输出写入文件 e、 g.在

我想通过管道[edit:real-time text]将几个子流程(有时链接,有时并行)的输出传输到一个终端/tty窗口,该窗口不是活动的python shell(无论是IDE、命令行还是使用tkinter的运行脚本)。IPython不是一个选项。我需要标准安装附带的东西。更喜欢操作系统不可知的解决方案,但需要在XP/Vista上工作

如果您愿意,我将发布我已经尝试过的内容,但这很尴尬。

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

e、 g.在子流程中:

  • 重定向输出
    %TEMP%\output.txt
  • 退出时,将
    output.txt
    复制到主进程正在监视的目录中
  • 在主要过程中:

  • 每隔一秒钟,检查目录中的新文件
  • 找到文件后,处理并删除它们

  • 您可以在输出文件名中对子进程名称进行编码,以便知道如何处理它。

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

    在1号航站楼:

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


    编辑:将terminal 2命令更改为使用“tail-f”而不是无限循环。

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

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

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

    还有一个windows扩展,支持使用命名管道

    在linux(可能是cygwin?)上,您可以只使用名为fifo的tail-f


    祝你好运

    我应该提到的是,我计划为每个进程实时传输stdout。文件解决方案是可行的,但我的用户习惯于30-60hz的响应时间。我相信硬盘可以处理它,但它似乎没有必要。另外,我还不清楚如何生成一个只显示输出文本(与当前IDE/脚本stdout分开)的shell窗口,无论是来自文件还是管道输出。也许你想要像idle(编辑器)那样的东西?窗口的行为是否与标准输出类似?您是从python脚本启动进程,还是从命令行启动进程,并希望将所有输入收集到正在处理的python脚本中?你能举个更具体的例子吗?+1:这听起来很像我需要的。我可能最终会在将来通过网络分发这些进程-1:无参考文献/示例。(谷歌的“生产商-客户系统插座”正在返回假肢制造解决方案的链接…其变化不是很有成效)感谢您的建议!这是
    googlepythonsocket
    ,第一个结果,然后向下滚动到“示例”部分。这对我来说很明显,很抱歉。我添加了一些可能对您有所帮助的示例链接。我的搜索结果返回:1:2:3:3您指的是第三个吗?它似乎是最有用的,但是它们都没有“示例”部分。当你不完全理解你在寻找什么时,当你找到它时就不明显了,而且很难确定你是否找到了高质量的来源我责备谷歌。我的成绩和你不一样。
    tail -f /tmp/display_data