我已經嘗試了一切只寫一個字節到Python中的文件。我如何寫一個字節到Python中的二進制文件
i=10
fh.write(six.int2byte(i))
將輸出 '0×00 0X0A'
fh.write(struct.pack('i', i))
將輸出 '0×00 0X0A 0×00 0×00'
我不明白爲什麼會這樣很難做到。
我已經嘗試了一切只寫一個字節到Python中的文件。我如何寫一個字節到Python中的二進制文件
i=10
fh.write(six.int2byte(i))
將輸出 '0×00 0X0A'
fh.write(struct.pack('i', i))
將輸出 '0×00 0X0A 0×00 0×00'
我不明白爲什麼會這樣很難做到。
您只需建立一個bytes
對象與價值:
with open('my_file', 'wb') as f:
f.write(bytes([10]))
這隻在python3。如果您將bytes
替換爲bytearray
它可以在python2和3中使用。
此外:請記住以二進制模式打開文件以向其寫入字節。
struct.pack("=b",i)
(有符號)和struct.pack("=B",i)
(無符號)將整數作爲單個字節打包,您可以在docs for struct中看到。 ("="
是用於使用標準尺寸和忽略對齊 - 以防萬一)所以你可以做
import struct
i=10
with open('binfile', 'wb') as f:
f.write(struct.pack("=B",i))
你是怎麼打開'fh'的? – RemcoGerlich
你在說[文件對象](https://docs.python.org/3/glossary.html#term-file-object),[文件描述符](https://docs.python.org/ 3/library/os.html#file-descriptor-operations)或實際的[Windows上的文件句柄](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364225(v = vs.85 )的.aspx)? – janbrohl