gpt4 book ai didi

python,在pexpect中设置终端类型

转载 作者:太空狗 更新时间:2023-10-30 02:00:51 25 4
gpt4 key购买 nike

我有一个使用 pexpect 启动 CLI 程序的脚本。它的工作方式有点像 shell,您可以在其中输入一些命令。

我认为我遇到的问题是该程序使用了彩色提示。

我是这样做的

import pprint
import pexpect

1 a = pexpect.spawn('program')
2 a.expect("prompt>")
3 print "---------start------------"
4 print(a.before)
5 a.sendline("command")
6 a.expect("prompt>")
7 print "---------before------------"
8 pprint.pprint(a.before)
9 print "---------after------------"
10 pprint.pprint(a.after)

这是输出:

> python borken.py
---------start------------
A lot of text here from the enjoying programs start-up, lorem ipsum ...
---------before------------
' \x1b[0m\x1b[8D\x1b[K\x1b[1m\x1b[34m'
---------after------------
'prompt>'

由于某些原因,第一个提示颜色编码使事情变得复杂,第 8 行的 a.before 出现乱码,正常打印不起作用,即使我看到第 5 行的命令实际上产生了很多输出。

有人知道问题出在哪里吗,或者是否可以设置终端类型以避免颜色?

我正在使用 tcsh shell

最佳答案

好的,我找到了答案。 csl 的回答让我走上了正确的道路。

pexpect 有一个我认为可以使用的“env”选项。像这样:

a = pexpect.spawn('program', env = {"TERM": "dumb"})

但这会产生一个新的 shell,它对我来说不起作用,我们的开发环境取决于很多环境变量:/

但是如果我在生成 shell 之前这样做:

import os
os.environ["TERM"] = "dumb"

我更改了当前的“TERM”和“dumb”不支持颜色,这解决了我的问题。

关于python,在pexpect中设置终端类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com