首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以将stdout重定向到某种字符串缓冲区吗?

我可以将stdout重定向到某种字符串缓冲区吗?
EN

Stack Overflow用户
提问于 2009-08-02 13:47:50
回答 7查看 150.3K关注 0票数 157

我正在使用python的ftplib编写一个小的FTP客户端,但是包中的一些函数并不返回字符串输出,而是打印到stdout。我想将stdout重定向到一个我可以从中读取输出的对象。

我知道可以使用以下命令将stdout重定向到任何常规文件:

代码语言:javascript
复制
stdout = open("file", "a")

但我更喜欢不使用本地驱动器的方法。

我正在寻找类似于Java中的BufferedReader的东西,它可以用来将缓冲区包装到流中。

EN

Stack Overflow用户

发布于 2017-04-09 10:01:49

在Python3.6中,StringIOcStringIO模块消失了,你应该使用io.StringIO instead.So你应该像第一个答案那样做:

代码语言:javascript
复制
import sys
from io import StringIO

old_stdout = sys.stdout
old_stderr = sys.stderr
my_stdout = sys.stdout = StringIO()
my_stderr = sys.stderr = StringIO()

# blah blah lots of code ...

sys.stdout = self.old_stdout
sys.stderr = self.old_stderr

// if you want to see the value of redirect output, be sure the std output is turn back
print(my_stdout.getvalue())
print(my_stderr.getvalue())

my_stdout.close()
my_stderr.close()
票数 4
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1218933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档