我已经设置了一类颜色,使标准输出在出现警告时更易于阅读。我还想将所有打印语句写入日志文件。
# Colour set up
class colours:
warning = '\033[93m'
colour1 = '\033[94m'
colour2 = '\033[1m'
terminate = '\033[0m'
# Logger set up
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open(“output.log”, "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
# Example
print colours.warning + ‘WARNING!’ + colours.terminate
*in colour*:$ WARNING!
*in output.log*: [93mWARNING!
有没有什么方法可以写入也会为 output.log 文件着色的字符,或者以彩色打印到标准输出但不在日志文件中包含“[94m”?为了方便用户,我不想要求安装任何非本地 python 包。
最佳答案
使用像 \x1b\[[0-9;]*m
这样的正则表达式在写入 output.log
对象时去除 ANSI 代码?
即
import re
ansi_re = re.compile(r'\x1b\[[0-9;]*m')
# ...
self.log.write(re.sub(ansi_re, '', message))
关于python - 从输出日志文件中排除 ANSI 转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782529/