相关疑难解决方法(0)

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

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

我知道stdout可以重定向到任何常规文件:

stdout = open("file", "a")
Run Code Online (Sandbox Code Playgroud)

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

我正在寻找类似于BufferedReaderJava的东西,可用于将缓冲区包装到流中.

python redirect stdout stream

127
推荐指数
7
解决办法
11万
查看次数

从Python中的脚本捕获stdout

假设有一个脚本做这样的事情:

# module writer.py
import sys

def write():
    sys.stdout.write("foobar")
Run Code Online (Sandbox Code Playgroud)

现在假设我想捕获write函数的输出并将其存储在变量中以供进一步处理.天真的解决方案是:

# module mymodule.py
from writer import write

out = write()
print out.upper()
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我想出了另一个解决方案并且它有效,但是请告诉我是否有更好的方法来解决问题.谢谢

import sys
from cStringIO import StringIO

# setup the environment
backup = sys.stdout

# ####
sys.stdout = StringIO()     # capture output
write()
out = sys.stdout.getvalue() # release output
# ####

sys.stdout.close()  # close the stream 
sys.stdout = backup # restore original stdout

print out.upper()   # post processing
Run Code Online (Sandbox Code Playgroud)

python stdout sys

79
推荐指数
8
解决办法
8万
查看次数

标签 统计

python ×2

stdout ×2

redirect ×1

stream ×1

sys ×1