从字节加载 numpy 中的 npz
Load a npz in numpy from bytes
我有一个从 numpy 保存的 npz 文件,我可以使用 numpy.load(mynpzfile)
加载它。但是,我想将该文件保存为二进制文件的一部分,与另一个文件打包在一起。类似于:
import numpy as np
from PIL import Image
from io import BytesIO
# Saving file jointly
input1 = open('animagefile.png', 'rb').read()
input2 = open('npzfile.npz', 'rb').read()
filesize = len(input1).to_bytes(4, 'big')
output = filesize + input1 + input2
with open('Output.bin', 'wb') as fp:
fp.write(output)
# Open them
input1 = open('Output.bin', 'rb').read()
filesize2 = int.from_bytes(input1[:4], "big")
segmentation = Image.open(BytesIO(input1[4:4+filesize2]))
# THIS LINE GIVES ME AN ERROR
layouts = np.frombuffer(input2[4+filesize2:])
但是,在回读 npz 时出现错误。我试过 load 和 frombuffer,都给我一个错误:
- 来自缓冲区:
ValueError: buffer size must be a multiple of element size
- 加载:
ValueError: embedded null byte
我能做什么?
最后一行应该是 input1
,而不是 input2
。另外,从错误消息中猜测,您忘记输入 BytesIO
.
layouts = np.load(BytesIO(input1[4+filesize2:]))
^^^^^^^ ^
我有一个从 numpy 保存的 npz 文件,我可以使用 numpy.load(mynpzfile)
加载它。但是,我想将该文件保存为二进制文件的一部分,与另一个文件打包在一起。类似于:
import numpy as np
from PIL import Image
from io import BytesIO
# Saving file jointly
input1 = open('animagefile.png', 'rb').read()
input2 = open('npzfile.npz', 'rb').read()
filesize = len(input1).to_bytes(4, 'big')
output = filesize + input1 + input2
with open('Output.bin', 'wb') as fp:
fp.write(output)
# Open them
input1 = open('Output.bin', 'rb').read()
filesize2 = int.from_bytes(input1[:4], "big")
segmentation = Image.open(BytesIO(input1[4:4+filesize2]))
# THIS LINE GIVES ME AN ERROR
layouts = np.frombuffer(input2[4+filesize2:])
但是,在回读 npz 时出现错误。我试过 load 和 frombuffer,都给我一个错误:
- 来自缓冲区:
ValueError: buffer size must be a multiple of element size
- 加载:
ValueError: embedded null byte
我能做什么?
最后一行应该是 input1
,而不是 input2
。另外,从错误消息中猜测,您忘记输入 BytesIO
.
layouts = np.load(BytesIO(input1[4+filesize2:]))
^^^^^^^ ^