如何在Linux终端中输出不同类型的Python调试信息?

3 投票
2 回答
1494 浏览
提问于 2025-04-15 23:18

我想把不同的信息输出到不同的终端窗口,而不是把它们都打印在同一个输出流里,比如说标准错误输出(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 命令,从管道的读端读取数据,并将数据写入管道的写端。

撰写回答