python print 在windows上 出现 Bad file descriptor error

Posted 神雕爱大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python print 在windows上 出现 Bad file descriptor error相关的知识,希望对你有一定的参考价值。

  先说一下情况,一个python写的采集程序,做成windows服务在windows上运行。

  这个问题出现的挺奇特,本来一套采集程序,一个采集文件的时候没问题,两个采集文件的时候也没问题,当三个采集文件的时候,就报错了。

       错误:IOError: (9, \'Bad file descriptor\')

       我还以为是代码有问题了,最终调试了下,发现是print的问题,

   

  把print去掉后,重新运行就没问题了。那么问题来了,为啥加上print有问题了?

        

 

  上面是查到的解释,看stackoverflow上的解释,当不作为控制台会话运行时,sys.stdout不可用,所以print不能用
那么问题来了,sys.stdout和print啥关系了?
  

   当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+\'\\n\')

           print 将你需要的内容打印到了控制台,然后追加了一个换行符

           print 会调用 sys.stdout 的 write 方法

  
对于两个时候可以,三个时候,第三个就报错,最终我只能理解为缓冲池满了吧,算了,死磕到此结束。



参考:https://stackoverflow.com/questions/4230855/why-am-i-getting-ioerror-9-bad-file-descriptor-error-while-making-print-st

        python的print与sys.stdout

 

       sys.stdout.flush() Python的作用

 

 

 

以上是关于python print 在windows上 出现 Bad file descriptor error的主要内容,如果未能解决你的问题,请参考以下文章

Python 3 pip 包安装在 Windows 上的 Ubuntu 上,出现 Errno 22 失败

window.print()实现局部打印功能

window.print()实现局部打印功能

python print中文乱码问题 win10 Python2

Java使用Runtime.getRuntime()去调用python时候,不能够实时输出python里面的print输出

Ubuntu14.04中Python+Django+MySQL出现这个问题,怎么解决?