Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

虽然没有什么难的,用谷歌搜也可以搜到,我还是记一下吧。

print的时候实际上调用的是sys.stdout.write方法,所以要先把stdout替换成一个具有write方法的对象,再print就会调用那个对象的write方法。请注意: 该方法仅测试过print,其他与stdout的相关的内置函数没有测试过

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# .\test.py
import io
import sys


# 先保存下stdout,避免待会儿无法通过print查看输出结果
stdout = sys.stdout
memstring = io.StringIO() # 内存文件

# 替换stdout
sys.stdout = memstring

# 输出内容。该内容会被重定向到memstring
print(1234)

# 重新设置stdout。该步骤用于查看上面的print是否如预期写入1234到memstring
sys.stdout = stdout
# 打印memstring中的内容
print(memstring.getvalue())

输出如下:

1
2
3
> python .\test.py
1234

评论



愿火焰指引你