Python标准重定向(特殊)

时间:2016-12-10 09:41:24

标签: python python-2.7 shell stdout

我目前正在python中构建一个shell。 shell可以执行python文件,但我还需要添加使用PIPE的选项(例如' |'表示第一个命令的输出将是第二个命令的输入)。

为了做到这一点,我需要选择接受第一个命令打印的内容(注意命令可能不是系统命令,而是带有行的python文件

print 'some information'

我需要将它传递给shell中的变量。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以将sys.stdout重定向到内存中BytesIOStringIO类文件对象:

import sys
from io import BytesIO

buf = BytesIO()
sys.stdout = buf

# Capture some output to the buffer
print 'some information'
print 'more information'

# Restore original stdout
sys.stdout = sys.__stdout__

# Display buffer contents
print 'buffer contains:', repr(buf.getvalue())
buf.close()

<强>输出

buffer contains: 'some information\nmore information\n'