使用 python 检测 .mat 版本

Detecting .mat version using python

我知道使用 python 读取 .mat 文件的两种替代方法。对于 7.3 版本之前的 .mat 文件,函数 scipy.io.loadmat 可以完美运行。对于 7.3 版本的 .mat 文件,您需要使用像 h5py 这样的 HDF5 reader。

我的问题是;有没有办法在 python 内找到给定文件的 .mat 版本?这样我就可以创建一个读取任何 .mat 的函数。

EAFP(请求原谅比请求许可更容易)

scipy.loadmat 会检查版本并在不支持时引发错误。

try:

    import scipy.io as sio
    test = sio.loadmat('test.mat')

except NotImplementedError:

    import h5py
    with h5py.File('test.mat', 'r') as hf:
        data = hf['name-of-dataset'][:]

except:
    ValueError('could not read at all...')

如果您想自己检查,可以在scipy.io.matlab.miobase.py中使用get_matfile_version()。用法同第一个 link.