Python 处理终端和文件中的颜色

标签 python linux python-2.7 vim

我在终端上用颜色打印通过和失败以及一些输出文件。

终端输出:

  Parameter                Output                   Result
  ------------             ------------             -------
  Timer Enabled            Enabled                  Passed

文件输出(使用vim编辑器打开):

  Parameter                Output                   Result
  ------------             ------------             -------
  Timer Enabled            Enabled                  ^[[92mPassed^[[0m

在 python 中我使用了下面的代码:

 HEADER = '\033[95m'
 OKBLUE = '\033[94m'
 OKGREEN = '\033[92m'
 WARNING = '\033[93m'
 FAIL = '\033[91m'
 ENDC = '\033[0m'
 BOLD = '\033[1m'
 UNDERLINE = '\033[4m'

代码执行发生在 linux 机器上,文件打开将在 windows 机器(word pad 或 notepad++)和 linux 上完成,比如 vim 编辑器。

现在我需要帮助,当我从 vim 或 Windows 字板打开文件时。我不想看到像“^[[92mPassed^[[0m”这样的颜色代码太丑了。任何人都可以帮助我实现结果的最佳选择

最佳答案

如果文件输出是通过

python script.py > foo.txt

您可以使用 os.isatty(1)(其中 1 是标准输出的文件句柄)来确定输出是否附加到终端(而不是文件)。如果它连接到终端,则不要输出颜色控制代码。

你也可以很自然地用类似的东西去除控制代码事后

text = re.sub('\033\\[\d+m', '', text)

关于Python 处理终端和文件中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46971566/

相关文章:

android - Linux for Android 知识

linux - overlayfs如何确定合并哪些文件夹和替换哪些文件夹

linux - Grep 多种模式

python - 编写非数据描述符

python - Pandas.read_excel 有时会错误地将 bool 值读取为 1's/0' s

python - pandas:如何在 df.plt() 中很好地格式化时间戳轴标签?

python - 将输出打印到 Excel

Python:通过 Pandas Dataframe 迭代写入 CSV 文件

python - matplotlib.pyplot.axes() 参数混淆

Python:通过xpath获取html表格数据