【问题标题】:Detecting .mat version using python使用python检测.mat版本
【发布时间】:2019-01-14 06:05:04
【问题描述】:

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

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

【问题讨论】:

    标签: python matlab scipy hdf5


    【解决方案1】:

    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()。用法同第一个链接。

    【讨论】:

    • 谢谢,这正是我所需要的。我考虑过使用 try except 示例,但我认为如果已经存在检查功能,那将是一种不好的做法。是这样吗?
    • 我不会说这是不好的做法。您还可以使用检查功能和一些if 条件来真正检查版本号。如果get_matfile_version() 中的版本是2,使用h5py 可能会更清楚。谁知道还有什么可能会引发NotImplementedError :) 这仅取决于您是否要使用get_matfile_version() 并偷偷预览文件。
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2010-12-30
    • 2010-09-06
    相关资源
    最近更新 更多