版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26114733/article/details/89511478
起因
写函数的时候把需要用的东西都print了。
结果后面要用的print的东西。
又不想再return。
索性像个办法把print捕获作为一个string。
经过
print的实质是调用了系统的标准输出,
print("hello")
sys.stdout.write('hello'+'\n')
上面两句话是等价的。
网上大都是有把输出重定向到文件,但是我只要输出作为string。先写入文件再读取就太不优雅了。
直接构造一个有write接口的类。
class redirect:
content = ""
def write(self,str):
self.content += str
def flush(self):
self.content = ""
然后
r = redirect()
sys.stdout = r
从此print的内容都被写入到r.content中了。
注意,是在重定向这句话执行之后,print的内容才会写入到r.content。