在python中处理终端颜色代码(ANSI颜色转义代码)

在python中处理终端颜色代码(ANSI颜色转义代码),python,openwrt,Python,Openwrt,我应该写一个PyQt应用程序,它可以通过UART与串行设备通信。我将它连接到一个基于OpenWRT的路由器上,当我尝试在上面运行“ls”时,输出(见附件屏幕截图)在文件夹名称周围有一些奇怪的字母。我知道这些是某种颜色代码。如何从输出中删除这些内容或相应地显示颜色。 任何帮助都会有所帮助。请参阅ls(1)的手册页以及命令的输出 $ command -v ls 在我的Linux系统上,这报告了 $ command -v ls alias ls='ls --color=auto' Unix交互式

我应该写一个PyQt应用程序,它可以通过UART与串行设备通信。我将它连接到一个基于OpenWRT的路由器上,当我尝试在上面运行“ls”时,输出(见附件屏幕截图)在文件夹名称周围有一些奇怪的字母。我知道这些是某种颜色代码。如何从输出中删除这些内容或相应地显示颜色。
任何帮助都会有所帮助。

请参阅ls(1)的手册页以及命令的输出

$  command -v ls
在我的Linux系统上,这报告了

$ command -v ls
alias ls='ls --color=auto'
Unix交互式shell无法可靠地确定所连接终端的特性,这是一个事实,令人遗憾的是GNU着色对终端漠不关心。当连接到一个不需要颜色的设备时,最好的办法就是在任何出现颜色的地方将其关闭

要测试这一点,一个快速技巧是按以下方式键入“ls”:

$ \ls

介绍性反斜杠破坏了shell的别名机制,并恢复为使用bare
/usr/bin/ls
,或您的
路径提供的任何内容

嘿,谢谢你的回复,詹姆斯,我理解你的答案,但我的问题是,这个工具将用于许多设备,其中许多设备我事先无法访问。有像“屏幕”这样的工具,它们能够以某种方式解析信息并相应地显示颜色,我需要一些可以这样做或同时删除代码的工具。您不需要访问设备。连接后,只需根据需要建立您的环境。使用shell fu:unalias并取消设置您支持/使用的每个命令。我真的认为那是你唯一的选择。我怀疑是否存在能够过滤掉ANSI控制序列的程序。这项任务很复杂,而且没有明确的规定:程序必须过滤termcap(或其他)中定义的任何设备的任何控制序列。任何声称能做到这一点的东西都会带来与其解决的问题一样多的问题。