如何在for循环中使用pims.open()处理多层子文件夹下的图像
问题根因
os.walk返回的name仅为子文件夹的纯名称,不包含上层根目录路径,直接拼接/*.jpg生成的是相对路径,程序会从当前运行脚本的工作目录下查找该子文件夹,和实际存储位置不匹配,因此报错找不到文件。- 你原代码中
os.path.join(root, name)才是子文件夹的完整路径(原代码误写为未定义的subdirectory变量),你之前的写法没有用到这个完整路径构造图像匹配规则。
修复后可直接运行的代码
import os import pims # 替换为你自己的根目录路径 root_path = '/file_path' for root, directories, files in os.walk(root_path, topdown=False): for dir_name in directories: # 生成子文件夹的完整绝对路径 full_subdir_path = os.path.join(root, dir_name) # 拼接jpg文件的匹配规则 img_path_rule = os.path.join(full_subdir_path, "*.jpg") # 读取该子文件夹下的所有jpg图像 img_set = pims.open(img_path_rule) # 下方填写你自己的处理逻辑即可 # 示例:打印当前子文件夹读取到的图像数量 print(f"已读取{full_subdir_path}下共{len(img_set)}张图像")
额外注意事项
- 如果你的图像同时存在
.jpg和.jpeg两种后缀,可以将匹配规则修改为*.jp*g兼容两种格式 - 若仍存在路径错误,可在调用
pims.open()前添加print(img_path_rule),将打印的路径和实际文件存储路径对比,即可快速定位拼接错误
内容的提问来源于stack exchange,提问作者Arti Tyagi
相关产品推荐
相关产品推荐

