如何判断经np.load加载的.npz文件是否为压缩文件?
判断.npz文件是否经过压缩的方法
方法1:通过zipfile模块检查文件压缩类型
.npz本质是标准ZIP归档文件:np.savez生成的npz内数组文件采用未压缩的ZIP_STORED格式,np.savez_compressed生成的则使用ZIP_DEFLATED压缩格式。可以用Python内置的zipfile模块直接解析判断:
import zipfile def is_npz_compressed(npz_path): with zipfile.ZipFile(npz_path, 'r') as zf: for info in zf.infolist(): if info.compress_type == zipfile.ZIP_DEFLATED: return True elif info.compress_type == zipfile.ZIP_STORED: return False return False
传入你的npz文件路径即可得到结果。如果已通过np.load加载文件,可通过加载后的对象.filename获取原始文件路径(需确保加载时未禁用相关属性)。
方法2:对比文件大小(快速粗略判断)
相同数组内容的前提下,np.savez_compressed生成的文件体积会远小于np.savez的产物,比如包含大数组的npz,压缩后大小可能仅为未压缩版本的几分之一,可通过文件管理器直接对比判断。
注意事项
用np.load加载后,内存中的数组对象不会保留是否来自压缩文件的标记,必须直接操作原始.npz文件才能完成判断。
内容的提问来源于stack exchange,提问作者ACitronella
相关产品推荐
相关产品推荐

