如何在Linux终端中输出不同类型的Python调试信息?
我想把不同的信息输出到不同的终端窗口,而不是把它们都打印在同一个输出流里,比如说标准错误输出(std.err)或者标准输出(std.out)。
举个例子:
我有5种信息,分别是A到E,想在同一个桌面上的不同终端窗口里显示,像这样:
[终端 1] <- 用来显示信息 A
[终端 2] <- 用来显示信息 B
[终端 3] <- 用来显示信息 C
[终端 4] <- 用来显示信息 D
[终端 5] <- 用来显示信息 E
我知道可以把它们输出到不同的文件里,然后打开终端读取这些文件,但我想要的是,Python程序能自己打开终端,并在需要的时候直接打印到这些终端里。
这样做可能吗?
谢谢!
KC
[编辑]
我觉得这个情况的最佳解决方案是使用 SOCKET 作为进程间通信(IPC),如果资源不是问题,这样会有最好的兼容性——采用服务器-客户端模式。而管道/子进程在同一平台下也是有用的解决方案。
2 个回答
1
使用 subprocess 模块,你可以同时运行多个你喜欢的终端程序,每个程序都在运行 "cat" 命令,方法是使用 subprocess.Popen。除了终端命令外,还要传入 stdin=subprocess.PIPE。这样你就可以直接向每个终端的输入流(stdin)写入数据。
大概可以这样做(未经测试!):
import subprocess
p = subprocess.Popen('xterm -e "cat > /dev/null"', stdin=subprocess.PIPE)
p.stdin.write("Hello World!")
3
打开一个管道,然后分叉出一个终端,运行 cat
命令,从管道的读端读取数据,并将数据写入管道的写端。