在这里问了一个类似的问题:ipython redirect stdout display corruption,但答案并不令人满意。
我尝试做的是捕获标准输出,将其写入PyQt4 QEditText,同时将其正常发送到终端。
我使用的是python 2.7和Ubuntu 12.04 LTS。
问题是当我在程序中嵌入一个IPython终端时,终端输出文本会出现乱码并且我失去了自动完成功能。
我能够在我的Ubuntu机器上非常简单地重现这个问题(这个问题似乎不存在于Windows上)。
在我的ubuntu termianl中:
ipython
import IPython.utils.io
tee = IPython.utils.io.Tee('fds')
就在这里,只需尝试使用Tee对象,文本就会出现乱码。
在我的程序中,我做的事情略有不同,但它归结为用自定义对象覆盖sys.stdout然后当调用write或flush时我记录捕获的文本并将其发送回原始标准输出和PyQt4 GUI。
那么,每当调用write或flush命令时,有没有办法安全地查看标准输出?有没有办法做到这一点,并没有打破IPython终端?
答案 0 :(得分:0)
这是由于终端中文本着色的特殊编码。尝试使用'ipython --classic'。