当前位置:  开发笔记 > 编程语言 > 正文

python,在pexpect中设置终端类型

如何解决《python,在pexpect中设置终端类型》经验,为你挑选了1个好方法。

我有一个使用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行之前是乱码,正常打印不起作用,即使我看到第5行的命令实际产生了大量输出.

有人知道问题可能是什么,或者是否可以在pexpect中设置终端类型以避免颜色?

我正在使用tcsh shell



1> Rickard Lind..:

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

pexpect有一个"env"选项,我认为我可以使用它.像这样:

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

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

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

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

我更改了当前的"TERM"和"哑"不支持颜色,这解决了我的问题.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有