Python Mimetypes 无法猜到部分格式
文章目录
我在开发过程中遇到一个奇怪的问题,使用 Python 的 mimetypes 去猜一个电子表格是 xls 还是 xlsx,从而决定使用 xlrd 还是 pyopenxl 去处理文件,本地电脑(Windows 10)可以正常分辨,但是部署到服务器(Windows Server 2008)之后,解析 xls 没问题,解析 xslx 总是返回 None,我百思不得其解,后来终于在注册表中发现了一些端倪。
在查看 mimetypes 的文档时我发现,在 Windows 平台上,它是通过读取注册表来将各种格式读进去,从而进行分辨的。
|
|
而由于 Windows Server 2008 比较旧,而且没有安装 MS Office,所以注册表里面只有 xls 格式,而没有 xlsx 格式,就导致 mimetypes 在遇到后缀名为 xlsx
的时候没法将 Content Type 对应到 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
,而解决方式也很简单,只需要在注册表中添加该格式即可:
定位到 计算机\HKEY_CLASSES_ROOT
,右键,新建项,命名为后缀名,例如这里是 .xlsx
然后点击新建的项,在右边空白处右键,新建字符串值
然后将字符串值的名称设置为 Content Type
,值设置为 mimetype,具体某个格式的 mimetype 可以上网搜。
文章作者 frank
上次更新 2022-11-18