You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用exifread处理非图片文件报错,如何让其忽略这类文件?

解决exifread处理非图片文件时的错误输出问题

核心问题

exifread的process_file方法默认会将格式错误信息打印到控制台,即便你用try-except捕获异常,它的内部打印逻辑仍会执行。另外你判断标签的方式存在问题:tags["EXIF DateTimeOriginal"] == True的写法不符合实际,标签值是日期字符串而非布尔值,且直接用[]访问不存在的键会抛出KeyError。

修正后的代码

import exifread

item = r"D:\TEMP\Vesna.mp3"
    
with open(item, 'rb') as file:
    try:
        # 设置quiet=True关闭exifread内部的错误打印
        tags = exifread.process_file(file, stop_tag="EXIF DateTimeOriginal", quiet=True)
        # 检查目标标签是否存在
        if "EXIF DateTimeOriginal" in tags:
            taken = tags["EXIF DateTimeOriginal"]
            print(taken)
        else:
            print("无目标标签")
    except Exception as e:
        # 捕获其他可能的异常(比如文件读取错误)
        print(f"处理出错: {str(e)}")

关键修改点

  • 添加quiet=True参数:彻底关闭exifread主动打印格式不识别错误的行为,解决错误信息输出问题。
  • 替换标签判断逻辑:用"EXIF DateTimeOriginal" in tags检查标签存在性,避免直接访问不存在的键抛出异常,逻辑更合理。
  • 路径使用原始字符串:r"D:\TEMP\Vesna.mp3"避免转义字符引发的路径解析问题。
  • 明确捕获异常类型:用except Exception as e代替裸except,便于排查其他潜在问题。

内容的提问来源于stack exchange,提问作者Zwornik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:57:16