0

我想用 xtermjs 处理 python pty 的 ansi 字符。据我所知,没有比 xtermjs 更好的 ansi 解析器,xtermjs 可以处理 nano 和 htop 之类的交互式程序,但其他程序则不能。那么如何在 python 中使用 xtermjs 解析和处理 ansi 字符?

目前我有一个 hacky 解决方案,但它很慢并且需要运行 java 脚本:

我用python制作了一个HTML(包含xtermjs的代码),如下所示:

const term = new Terminal({
    convertEol:true,
});
term.open(document.getElementById("terminal"));

term.write(`[?2004h[?1049h[22;0;0t[1;24r(B[m[4l[?7h[39;49m[?1h=[?1h=[?25l[39;49m(B[m[H[2J[22;35H(B[0;7m[ New File ](B[m[H(B[0;7m  GNU nano 4.8                         a1.txt                                   [1;79H(B[m
    [23d(B[0;7m^G(B[m Get Help  (B[0;7m^O(B[m Write Out (B[0;7m^W(B[m Where Is  (B[0;7m^K(B[m Cut Text  (B[0;7m^J(B[m Justify   (B[0;7m^C(B[m Cur Pos
    [24d(B[0;7m^X(B[m Exit[14G(B[0;7m^R(B[m Read File (B[0;7m^\(B[m Replace   (B[0;7m^U(B[m Paste Text(B[0;7m^T(B[m To Spell  (B[0;7m^_(B[m Go To Line
    [22d[2d[39;49m(B[m[?12l[?25h`)

term.selectAll()
parsed = term.getSelection()
console.debug(parsed)

然后在 Python 中,我运行这个文件并使用 selenium 捕获控制台日志!通过这种方式,我可以获得传递给的那个丑陋字符串的漂亮输出term.write()

PS:我不能使用套接字进行通信。我感谢更好更快的解决方案。

4

0 回答 0