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+' ')

           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的作用

 
原文地址:https://www.cnblogs.com/sdadx/p/10043803.html