这是因为您正在尝试将字符串(编辑)写入二进制文件。在尝试再次读取文件之前,您也不要关闭该文件。
如果你想要写整数或字符串二进制文件尝试添加下面的代码:
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'代替。) –