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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM