這是因爲您正在嘗試將字符串(編輯)寫入二進制文件。在嘗試再次讀取文件之前,您也不要關閉該文件。
如果你想要寫整數或字符串二進制文件嘗試添加下面的代碼:
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
我要把它留給你找出浮點數。
打印第一,第二
[4] []
的更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(「i」的ASCII碼)和106(「j」的ASCII碼)。 – DyZ
'f.write'('i'+'j')'行將字符串''ij''寫入文件。您將需要使用[struct.pack](https://docs.python.org/2.7/library/struct.html#struct.pack),以便將數據正確編碼爲二進制。 –
既然您使用'numpy.fromfile'來加載數據,最自然的事情就是使用'numpy.ndarray.tofile'來存儲數據。 (但請注意[文檔](https://docs.scipy.org/doc/numpy/reference/generated/numpy。fromfile.html)推薦使用'numpy.save'和'numpy.load'代替。) –