2011-09-20 1273 views
0

我需要做的事情如下:在Python脚本产生的时候,比如说“ls --colors = always /”Linux命令,并读取其输出。其中重要的部分是我需要输出来保留所有ANSI转义序列(颜色等),以便稍后将这些序列转换为HTML。我听说Python的pty模块可以做到这一点,但我找不到在Internet中使用它的有用示例,而且该模块的文档不够全面。如果有人能指导我完成这项任务,我将不胜感激。Python pty模块使用示例

回答

1
import subprocess as sub 

process = sub.Popen("ls --colors=always /", stdout=sub.PIPE, stderr=sub.PIPE) 
output, errors = process.communicate() 

现在所有你想要的数据应该在output - 包括ANSI转义序列。

+0

是的,这适用于'ls',但由于某些原因,它不适用于我实际需要的Gentoo Linux'emerge'命令。当我将“emerge -pvuDN world”称为“emerge -pvuDN world”时,它会剥离所有ANSI转义符,并返回纯文本。 –

+0

@ Ch00k:我对此表示怀疑。它是否适用于'ls'的颜色代码__?如果不在交互式shell中使用,我认为'emerge'不会输出颜色。试试这个:'emerge --colory -pvuDN world'。 – orlp

+0

你是对的。我需要明确地通过'--color y'选项强制非tty输出上的颜色。谢谢! –