在蟒蛇2.x的我能做到這一點:如何在python 3的stdout中編寫二進制數據?
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)
但是現在,我得到一個TypeError: can't write bytes to text stream
。我應該使用一些祕密編碼嗎?
在蟒蛇2.x的我能做到這一點:如何在python 3的stdout中編寫二進制數據?
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)
但是現在,我得到一個TypeError: can't write bytes to text stream
。我應該使用一些祕密編碼嗎?
一種更好的方式:
import sys
sys.stdout.buffer.write(b"some binary data")
import os
os.write(1, a.tostring())
,或者os.write(sys.stdout.fileno(), …)
如果這是比1
你更具可讀性。
謝謝,這工作。感覺有點黑客,但我想這不是一件常見的事情。 – 2009-05-25 23:21:54
`os.write`的問題是你必須檢查返回值,因爲它不能保證所有內容都會被寫入。 – 2015-09-01 18:04:50
如果你想指定python3編碼仍然可以使用的字節命令象下面這樣:
import os
os.write(1,bytes('Your string to Stdout','UTF-8'))
其中1是對應通常的數爲stdout - > sys.stdout.fileno()
否則,如果你不關心編碼只是使用:
import sys
sys.stdout.write("Your string to Stdout\n")
如果你想使用os.write沒有編碼,然後嘗試使用下面的:
import os
os.write(1,b"Your string to Stdout\n")
這將是更好的找到一個答案,將與Python 2.6 + 3合作。 x – sorin 2010-06-14 17:19:54
`os.write`可以在Py2和Py3上運行。 – 2014-04-26 17:50:40