python捕获print标准输出

版权声明:本文为博主原创文章,未经博主允许不得转载。 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。

猜你喜欢

转载自blog.csdn.net/sinat_26114733/article/details/89511478