使用numpy.load读取文件时遭遇UnpicklingError问题求助
NumPy数组保存后读取报UnpicklingError的解决方法
错误原因
你在保存数组时同时犯了一个关键错误:既用with open手动打开了文件,又给np.save传入了文件名参数。这会导致np.save重新打开同一个文件,和你手动持有的文件句柄产生冲突,最终写入的文件内容损坏,读取时触发解包错误。
正确的保存代码(二选一)
- 直接让
np.save处理文件操作,无需手动打开:
filename = r'D:\Data\my_folder\mydata.npy' np.save(filename, numpy_array, allow_pickle=True, fix_imports=True)
- 手动打开文件时,需将文件对象传给
np.save而非文件名:
filename = r'D:\Data\my_folder\mydata.npy' with open(filename, 'wb') as file: np.save(file, numpy_array, allow_pickle=True, fix_imports=True)
正确的读取代码(二选一)
- 直接用
np.load读取文件名:
filename = r'D:\Data\my_folder\mydata.npy' numpy_array = np.load(filename, allow_pickle=True, fix_imports=True)
- 手动打开文件时,传入文件对象:
filename = r'D:\Data\my_folder\mydata.npy' with open(filename, 'rb') as file: numpy_array = np.load(file, allow_pickle=True, fix_imports=True)
提示:建议使用原始字符串
r'路径'来避免路径中的转义字符问题,比反复写\\更简洁不易出错。
内容的提问来源于stack exchange,提问作者BoofKoor
相关产品推荐
相关产品推荐

