Python 完全捕获对GNU屏幕的调用输出

Python 完全捕获对GNU屏幕的调用输出,python,subprocess,stdout,Python,Subprocess,Stdout,在我的一个Python3程序中,我在某个时候打开了一个GNU屏幕会话。 关闭此会话后,输出 [screen is terminating] 打印到周围的会话(运行python程序的终端)。我如何防止这种情况 我目前正在运行类似的程序 import subprocess subprocess.run('screen',stdout=subprocess.PIPE,stderr=subprocess.PIPE) 通常,[stdout,stderr]=subprocess.PIPE捕获输出和错误

在我的一个Python3程序中,我在某个时候打开了一个GNU屏幕会话。 关闭此会话后,输出

[screen is terminating]
打印到周围的会话(运行python程序的终端)。我如何防止这种情况

我目前正在运行类似的程序

import subprocess 
subprocess.run('screen',stdout=subprocess.PIPE,stderr=subprocess.PIPE)

通常,
[stdout,stderr]=subprocess.PIPE
捕获输出和错误(例如,对于
run('echo hello',stdout=subprocess.PIPE)
没有打印任何内容),但由于某些原因,这不适用于
屏幕
,您应该捕获
stderr
以及
stdout
,如果你不想在控制台上打印任何东西

Screen
也可能检测到
stdin
是一个tty,并将其用于I/O。不过,我不知道给它一个管道或
/dev/null
是否能解决问题。试试看它是否有效


屏幕
最有可能需要访问
tty
设备才能工作。您可以为它创建一个tty(通过打开
/dev/ptmx
并给
屏幕
相应的
/dev/pts/N
文件),但这绝不是一件小事。

如果您不想在控制台上打印任何内容,您应该捕获
stderr
以及
stdout

Screen
也可能检测到
stdin
是一个tty,并将其用于I/O。不过,我不知道给它一个管道或
/dev/null
是否能解决问题。试试看它是否有效


屏幕
最有可能需要访问
tty
设备才能工作。你可以为它创建一个tty(通过打开
/dev/ptmx
并给
屏幕
相应的
/dev/pts/N
文件),但这绝不是小事。

我相信你是对的。当我更改
stdin
时,我确实得到了
stdout
内容,即“屏幕必须连接到终端”(或类似内容)。我相信你的建议对我来说太难了。我有另一个解决方案:只需删除使用
'\b'、'\033[F'、'\033'编写的内容[K'
。不幸的是,
screen
并非总是以相同的终端输出结束,您知道一种读取屏幕打印到终端上的内容的方法吗?我相信您是对的。当我更改
stdin
时,我确实得到了
stdout
内容,即“屏幕必须连接到终端”(或类似内容)。我相信你的建议对我来说太难了。我有另一个解决办法:删除使用
'\b','\033[F','\033[K'
编写的内容。不幸的是
屏幕
并不总是以相同的输出结束到终端,你知道一种读取屏幕打印到终端的内容的方法吗?