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

如何递归读取不同层级多文件夹下的所有.tif格式图像

任意嵌套深度目录下批量读取TIF图像方案

核心解决思路

  • 采用递归文件匹配逻辑,无需手动指定目录嵌套深度,自动遍历根目录下所有层级子文件夹
  • 增加异常捕获机制,跳过损坏、格式不兼容的无效文件,避免单文件错误导致整个程序中断
  • 提供双读取引擎适配,普通TIF用PIL读取,特殊压缩/大体积科研类TIF用tifffile读取,覆盖绝大多数场景

前置依赖安装

先安装需要的依赖库,执行命令:
pip install pillow tifffile

可直接运行的实现代码

from pathlib import Path
from PIL import Image

# 替换为实际的根文件夹路径
root_path = Path("你的根目录路径")
success_images = {}
failed_files = []

# 递归匹配所有层级下后缀为tif/TIF的文件,自动兼容大小写后缀
for tif_file in root_path.rglob("*.[tT][iI][fF]"):
    # 过滤掉同名目录,仅处理文件
    if not tif_file.is_file():
        continue
    try:
        # PIL读取模式:适合普通场景的TIF图像
        with Image.open(tif_file) as img:
            img.load()  # 提前加载图像数据,避免文件句柄关闭后无法访问
            success_images[str(tif_file)] = img
        
        # 如果是显微/遥感类特殊压缩TIF,注释掉上面PIL的读取代码,启用下面tifffile的读取逻辑
        # import tifffile
        # img_array = tifffile.imread(tif_file)
        # success_images[str(tif_file)] = img_array
    except Exception as e:
        print(f"文件 {tif_file} 读取失败: {str(e)}")
        failed_files.append(str(tif_file))

print(f"读取完成:成功{len(success_images)}个,失败{len(failed_files)}个")

之前报错的常见原因

PIL.UnidentifiedImageError一般由以下问题触发:

  • 遍历逻辑未做递归,仅读取了固定层级的文件,甚至误将文件夹路径作为文件路径传入读取接口
  • 遍历到的文件并非有效TIF:包括后缀被手动修改为.tif的其他格式文件、未下载完成的损坏文件、系统生成的临时隐藏文件
  • TIF采用了PIL原生不支持的压缩算法,这类场景切换成tifffile引擎即可正常读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:03:31