使用 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.
我知道使用 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.