簡體   English   中英

如何在python3.3中將字節寫入stdout

[英]how to write bytes to stdout in python3.3

名為== a.py ==的測試文件

import os

if __name__ == '__main__':
    for x in range(0,1000):
        try:
            os.sys.stdout.buffer.write(b"hello\r\n")
            os.sys.stdout.buffer.flush()
        except OSError:
            pass

它獨自運行時沒關系。 但以下情況有問題:

  1. 運行python a.py | 更多
  2. 按ctrl + c退出

然后我在<_io.TextIOWrapper name =''mode ='w'coding ='cp936'>忽略了Exception OSError:OSError(22,'Invalid argument')

我已經在os.sys.stdout.buffer操作中捕獲了OSError,但它仍然出錯。

如果我不使用os.sys.stdout.buffer.flush,那么沒有錯誤消息。 如果我只使用print(),一切都OK。

那么如何正確地將字節寫入stdout呢?

我使用的是Windows 7 64位和Python 3.3.0 32位。

您可以使用os.fdopen以不同的模式重新打開stdout。 您可以使用sys.stdout.fileno()獲取stdout的文件號。

例:

>>> fp = os.fdopen(sys.stdout.fileno(), 'wb')
>>> fp.write(b'Hello, world')
12
>>> sys.stdout.mode
'w'
>>> fp.mode
'wb'
>>> fp.flush()
Hello, world>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM