私はpythonでファイルに1バイトだけ書き込むよう試みました。Pythonのバイナリファイルに1バイトを書き込むにはどうすればいいですか?
i=10
fh.write(six.int2byte(i))
意志出力 '0x00のは0x0A'
fh.write(struct.pack('i', i))
意志出力 '0x00のは0x0A 0x00を0x00に'
これはやることが困難である理由私は理解できません。
私はpythonでファイルに1バイトだけ書き込むよう試みました。Pythonのバイナリファイルに1バイトを書き込むにはどうすればいいですか?
i=10
fh.write(six.int2byte(i))
意志出力 '0x00のは0x0A'
fh.write(struct.pack('i', i))
意志出力 '0x00のは0x0A 0x00を0x00に'
これはやることが困難である理由私は理解できません。
あなたはただ、その値でbytes
オブジェクトを構築することができます:これはのみのpython3で動作
with open('my_file', 'wb') as f:
f.write(bytes([10]))
。 bytes
をbytearray
に置き換えると、python2と3の両方で動作します。
また、バイナリモードでファイルを開いて、ファイルに書き込むことを忘れないでください。
struct.pack("=b",i)
(符号付き)とstruct.pack("=B",i)
(符号なし)は、docs for structに表示される1バイトの整数をパックします。 ("="
は標準サイズとアライメントを無視するためのものです)
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)? Python2.7で – janbrohl