filetype: python中判断图像格式库imghdr替代库

本文介绍了Python内置库imghdr在Python3.13中即将被移除的情况,推荐了filetype库作为替代,提供文件类型识别和MIME类型检测功能,并给出了安装和使用的示例。

引言

imghdr库是python中的一个内置库,用来判断图像原本格式的。自己一直有在用,不过近来看到这个库在python 3.13中会被移除。

自己感觉一直被python版本赶着走。这不找了好久,才找到一个替代库–filetype

Python各个版本将要移除和可替代的库列表

在这里插入图片描述

filetype

安装
pip install filetype
使用
import filetype

def main():
    kind = filetype.guess('tests/fixtures/sample.jpg')
    if kind is None:
        print('Cannot guess file type!')
        return

    print('File extension: %s' % kind.extension)
    print('File MIME type: %s' % kind.mime)

if __name__ == '__main__':
    main()

# File extension: jpg
# File MIME type: image/jpeg
支持的格式
Image
  • dwg - image/vnd.dwg
  • xcf - image/x-xcf
  • jpg - image/jpeg
  • jpx - image/jpx
  • png - image/png
  • apng - image/apng
  • gif - image/gif
  • webp - image/webp
  • cr2 - image/x-canon-cr2
  • tif - image/tiff
  • bmp - image/bmp
  • jxr - image/vnd.ms-photo
  • psd - image/vnd.adobe.photoshop
  • ico - image/x-icon
  • heic - image/heic
  • avif - image/avif
  • qoi - image/qoi
Video
  • 3gp - video/3gpp
  • mp4 - video/mp4
  • m4v - video/x-m4v
  • mkv - video/x-matroska
  • webm - video/webm
  • mov - video/quicktime
  • avi - video/x-msvideo
  • wmv - video/x-ms-wmv
  • mpg - video/mpeg
  • flv - video/x-flv
Audio
  • aac - audio/aac
  • mid - audio/midi
  • mp3 - audio/mpeg
  • m4a - audio/mp4
  • ogg - audio/ogg
  • flac - audio/x-flac
  • wav - audio/x-wav
  • amr - audio/amr
  • aiff - audio/x-aiff
Archive
  • br - application/x-brotli
  • rpm - application/x-rpm
  • dcm - application/dicom
  • epub - application/epub+zip
  • zip - application/zip
  • tar - application/x-tar
  • rar - application/x-rar-compressed
  • gz - application/gzip
  • bz2 - application/x-bzip2
  • 7z - application/x-7z-compressed
  • xz - application/x-xz
  • pdf - application/pdf
  • exe - application/x-msdownload
  • swf - application/x-shockwave-flash
  • rtf - application/rtf
  • eot - application/octet-stream
  • ps - application/postscript
  • sqlite - application/x-sqlite3
  • nes - application/x-nintendo-nes-rom
  • crx - application/x-google-chrome-extension
  • cab - application/vnd.ms-cab-compressed
  • deb - application/x-deb
  • ar - application/x-unix-archive
  • Z - application/x-compress
  • lzo - application/x-lzop
  • lz - application/x-lzip
  • lz4 - application/x-lz4
  • zstd - application/zstd
Document
  • doc - application/msword
  • docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document
  • odt - application/vnd.oasis.opendocument.text
  • xls - application/vnd.ms-excel
  • xlsx - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • ods - application/vnd.oasis.opendocument.spreadsheet
  • ppt - application/vnd.ms-powerpoint
  • pptx - application/vnd.openxmlformats-officedocument.presentationml.presentation
  • odp - application/vnd.oasis.opendocument.presentation
Font
  • woff - application/font-woff
  • woff2 - application/font-woff
  • ttf - application/font-sfnt
  • otf - application/font-sfnt
Application
  • wasm - application/wasm
在使用 `pandas` 将数据导出到 Excel 文件时,如果遇到错误信息 `ValueError: No engine for filetype: 'xls'`,这通常意味着所使用的 `pandas` 函数(如 `to_excel`)未能找到合适的引擎来处理 `.xls` 文件格式。 `pandas` 默认使用 `openpyxl` 或 `xlwt` 作为写入 Excel 文件的引擎。然而,`openpyxl` 仅支持 `.xlsx` 格式,而 `xlwt` 支持旧的 `.xls` 格式。当尝试写入 `.xls` 文件而没有正确安装或指定 `xlwt` 引擎时,就会出现此错误[^1]。 ### 解决方法 1. **安装 `xlwt` 模块** 确保环境中已安装用于写入 `.xls` 文件的 `xlwt` 模块。可以通过以下命令安装: ```bash pip install xlwt ``` 2. **明确指定引擎** 在调用 `to_excel` 方法时,可以通过 `engine` 参数显式指定使用 `xlwt` 引擎来写入 `.xls` 文件: ```python import pandas as pd # 创建一个示例 DataFrame df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) # 导出为 .xls 文件并指定引擎 df.to_excel('output.xls', index=False, engine='xlwt') ``` 3. **考虑使用 `.xlsx` 格式替代** 如果不需要与旧版 Excel 兼容,建议将文件保存为 `.xlsx` 格式,并使用 `openpyxl` 引擎。这种方式支持更多现代 Excel 功能,并且是 `pandas` 推荐的默认格式: ```bash pip install openpyxl ``` ```python # 导出为 .xlsx 文件 df.to_excel('output.xlsx', index=False) ``` ### 注意事项 - `xlwt` 模块不再积极维护,仅支持 Python 3.6 及以下版本。对于 Python 3.7 及以上版本,建议使用 `openpyxl` 并导出为 `.xlsx` 格式。 - 若需与 `.xls` 文件交互,且使用 Python 3.7 及以上版本,可考虑使用 `xlwt-future` 或 `pyexcel-xls` 等社区维护的替代。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值