Python打印颜色输出到文件。打开文件时能够读取彩色文件

时间:2017-05-20 01:42:09

标签: python python-2.7 colors

在我们打开文件时,python中是否有任何方法可以将颜色输出打印到文件并以彩色读取输出?

我正在使用linux oS。

我正在使用en脚本将输出文件转换为html并在浏览器中读取。

以下是代码:

import sys
import time
class bcolors:
   HEADER = '\033[95m'
   OKBLUE = '\033[94m'
   OKGREEN = '\033[92m'
   WARNING = '\033[93m'
   FAIL = '\033[91m'
   ENDC = '\033[0m'
   BOLD = '\033[1m'
   UNDERLINE = '\033[4m'
from prettytable import PrettyTable
a = "ok"
b = "Failed"
t = PrettyTable([bcolors.WARNING + 'Input' + bcolors.WARNING, bcolors.WARNING + 'status' + bcolors.WARNING])
if a == "ok":
   t.add_row([bcolors.OKGREEN + 'FAN' + bcolors.ENDC, bcolors.FAIL + a + bcolors.ENDC])
else:
   t.add_row(['FAN', b])
storage_file = open("Storage-output.txt", 'w')
sys.stdout = storage_file
print t
storage_file.close() 

它生成文本文件Storage_file。

我将使用enscript转换html的Storage_file。以下是命令。

enscript --language=html -o file_out_html.html Storage-output.txt

现在我在网络浏览器中的输出显示如下:

Storage-output.txt
+-------+--------+
| [93mInput[93m | [93mstatus[93m |
+-------+--------+
|  [92mFAN[0m  |   [91mok[0m   |
+-------+--------+

要求:

  1. 因为我不是在写html脚本。我正在编写python脚本,它生成输出并发送到文件。我需要在带有颜色的Web浏览器中阅读此文件。
  2. 任何解决方案对我都没问题

1 个答案:

答案 0 :(得分:0)

班级bcolors中的字符串是ANSI颜色代码。如果您有一个适当配置的终端仿真器,当您使用print语句将此输出发送到屏幕时,您将看到颜色。

但HTML有一种完全不同的指定颜色的方式:它看起来像这样

<p style="color:red;">This is a paragraph.</p>

浏览器不了解ANSI颜色代码,因此您的enscript命令需要知道如何将它们转换为HTML。但Enscript也不了解ANSI颜色代码。如果你想为Enscript指定颜色,你需要像

这样的东西
~color{red green blue}

其中redgreenblue以0到1之间的十进制数给出。

当你运行Enscript时,你需要定义~作为转义字符:add  -e~到您的命令行,以便识别colour指令。如果您的数据中有~,请选择其他字符。