print在Python,pythonprint输出

  print在Python,pythonprint输出

  专栏:Python基础教程目录专栏:使用PyQt开发图形界面Python应用专栏:PyQt学习入门老Ape Python博客目录Python中的标准输出和错误输出负责sys模块的stdout和stderr对象。如果要重定向所有打印语句和相关的错误信息输出,只需创建一个类似于file IO的类,并用该类的实例替换sys模块的stdout和stderr对象。

  具体来说,它通过以下步骤完成:

  备份标准输出sys.stdout和stderr对象,以便进行恢复或其他处理;

  构建一个支持类似文件的io的类

  判断Python对象是否支持文件IO是典型的鸭式处理方法,即对象是否实现读写方法。由于标准输出只需要写入而不需要读取,因此可以用相应的写入方法处理捕获的输出信息,例如输出到特定的文件或图形窗口。

  使用此类(如file io)创建一个对象,并将其分配给sys.stdout

  示例:import sys class mystdout():def _ _ init _ _(self):self . stdoutbak=sys.stdout self . stderrbak=sys . stderr sys . stdout=self sys . stderr=self def write(self,Info): #info information是标准输出sys . stdout和sys . stderr str=Info . rstip( \ r \ n )iflen(str):self . process Info(str)#处理输出信息的方法def processInfo(self,Info): self.stdoutbak.write()def restoreStd(self): print(准备恢复标准输出)sys . stdout=self . stdout bak sys . stderr=self . stderr bak print(恢复标准输出完成)def _ _ del _ _(self):self . restoreStd()print(主程序开始运行,创建标准输出替代对象.)mystd=myStdout()print(标准输出替代对象被创建,准备销毁)# mystd . resttd()del mystd print(主程序结束)运行截图:

  可以看出,上面的代码恢复标准输出是从析构函数中调用的,由于Python固有的销毁对象的处理机制,del执行后不会立即执行析构函数,析构函数的执行存在不可控因素,导致主程序退出后不调用析构函数,执行完毕后在输出界面再次按回车键才会输出信息,这个析构函数过程有些随意。所以最好调用恢复标准输出的restoreStd方法,不需要执行del语句,可控性更强。

  以下是调整的主要程序代码:

  打印(主程序开始运行,创建标准输出替代对象.)mystd=myStdout()print(标准输出替代对象被创建,准备销毁替代对象)mystd . resttd()# delmystdprint(主程序结束)执行后的结果如下:

  从上面的过程可以明显看出,标准输出重定向捕获是成功的。

  老猿蟒,跟老猿学蟒!专栏:Python基础教程目录专栏:用PyQt开发图形界面的Python应用专栏:PyQt入门的Python博客博客目录

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: