これは、バイナリファイルに文字列(編集済み)を書き込もうとしているためです。ファイルをもう一度読む前に、ファイルを閉じないでください。
あなたは以下のコードを追加し、バイナリファイルしようとするint型や文字列を書きたい場合:
import numpy as np
import struct
f = open('binary.file','wb')
i = 4
if isinstance(i, int):
f.write(struct.pack('i', i)) # write an int
elif isinstance(i, str):
f.write(i) # write a string
else:
raise TypeError('Can only write str or int')
f.close()
g = open('binary.file','rb')
first = np.fromfile(g,dtype=np.uint32,count = 1)
second = np.fromfile(g,dtype=np.float64,count = 1)
print first, second
私は浮動数を把握するためにあなたにそれを残しておきます。あなたはPythonで型に関するいくつかの混乱を持っているように見える
import numpy as np
import struct
with open ('binary.file','wb') as f:
i = 4
if isinstance(i, int):
f.write(struct.pack('i', i)) # write an int
elif isinstance(i, str):
f.write(i) # write a string
else:
raise TypeError('Can only write str or int')
with open('binary.file','rb') as g:
first = np.fromfile(g,dtype=np.uint32,count = 1)
second = np.fromfile(g,dtype=np.float64,count = 1)
print first, second
ファイルに4と5.55を書き込まないでください。 105(ASCIIコードの「i」)と106(ASCIIコードの「j」)を記述します。 – DyZ
'f.write( 'i' + 'j')'という行は '' ij''という文字列をファイルに書き出しています。データをバイナリとして適切にエンコードするには、[struct.pack](https://docs.python.org/2.7/library/struct.html#struct.pack)を使用します。 –
データをロードするために 'numpy.fromfile'を使用しているので、最も自然なことは' numpy.ndarray.tofile'を使ってデータを保存することです。 (ただし、[docs](https://docs.scipy.org/doc/numpy/reference/generated/numpy。fromfile.html)は、代わりに 'numpy.save'と' numpy.load'を使うことをお勧めします。 –