0
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- 一切都很好,但管道断裂突出显示......有什么想法吗?

例子:

例子

4

1 回答 1

3

less是错,不是 Python 的错。less使用-R开关运行:

-R或者--RAW-CONTROL-CHARS

类似-r,但只有 ANSI“颜色”转义序列以“原始”形式输出。与 不同-r的是,在大多数情况下,屏幕外观保持正确。ANSI“颜色”转义序列是以下形式的序列:

ESC [ ... m

其中“...”是零个或多个颜色规范字符 为了跟踪屏幕外观,假定 ANSI 颜色转义序列不会移动光标。您可以通过将环境变量 LESSANSIENDCHARS 设置为可以结束颜色转义序列的字符列表来减少“m”以外的字符可以结束 ANSI 颜色转义序列的想法。通过将环境变量 LESSANSIMIDCHARS 设置为可以出现的字符列表,您可以减少在 ESC 和 m 之间出现标准字符以外的字符。

于 2013-01-29T00:36:11.750 回答