from pygments.lexers import RstLexer
from pygments.formatters import TerminalFormatter
from pygments import highlight
output = highlight(source, RstLexer(), TerminalFormatter())
p = subprocess.Popen('less', stdin=subprocess.PIPE)
p.stdin.write(output)
p.stdin.close()
p.wait()
当我只是print output
时 - 一切正常,但是管道突破突出显示......
有什么想法吗?
示例:
答案 0 :(得分:3)
那是less
的错,而不是Python的错。使用less
开关运行-R
:
-R
或--RAW-CONTROL-CHARS
与
-r
类似,但只有ANSI“颜色”转义序列以“原始”形式输出。与-r
不同, 在大多数情况下,屏幕外观保持正确。 ANSI“颜色”转义序列是以下形式的序列:ESC [ ... m
其中“...”为零个或多个颜色指定字符用于跟踪 屏幕外观,ANSI颜色转义序列被假定为不移动光标。你可以减少 认为“m”以外的字符可以通过设置环境来结束ANSI颜色转义序列 将LESSANSIENDCHARS变量到可以结束颜色转义序列的字符列表。你可以 尽量少考虑标准之外的字符可能出现在ESC和m之间 将环境变量LESSANSIMIDCHARS设置为可以出现的字符列表。