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

如何将图片元数据info_dict数据存入DataFrame的独立列?

解决方法

原脚本的问题是把所有元数据拼成单个字符串塞进单列DataFrame,要实现每个元数据项对应独立列,直接利用info_dict的结构来构建DataFrame就行,不用手动拼接字符串。

修改后的完整代码

import os
import pathlib
import pandas as pd
from PIL import Image

rootdir = "你的图片目录路径"  # 替换成实际的图片文件夹路径
metadata_list = []  # 用来收集所有图片的元数据字典

for file in os.listdir(rootdir):
    try:
        image_path = os.path.join(rootdir, file)
        image = Image.open(image_path)
        
        # 提取元数据,保持字典结构不变
        info_dict = {
            "FileName": os.path.basename(image.filename),
            "FileSize": os.path.getsize(image.filename),
            "FileSuffix": pathlib.Path(image.filename).suffix,  # 原键名FilePath容易误解,建议改成FileSuffix,要保留原列名也可以不改
            "DPI": image.info['dpi'][0],
            "Height": image.height,
            "Width": image.width,
            "Format": image.format,
            "Mode": image.mode,
            "Frames": getattr(image, "n_frames", 1)
        }
        
        metadata_list.append(info_dict)  # 把当前图片的元数据字典加入列表
        
    except Exception as e:
        print(f"处理文件 {file} 时出错: {e}")
        continue

# 用收集好的字典列表创建DataFrame,自动以字典的键作为列名
DPIDf = pd.DataFrame(metadata_list)
print(DPIDf)

关键改动说明

  • 先建一个空列表metadata_list,把每张图片的元数据字典都存进去,避免每次循环都新建DataFrame,效率更高
  • 直接把info_dict添加到列表里,pandas会自动把字典的键作为列名,对应的值作为每行的数据,完美匹配你要的“每个数据项存到对应独立列”的需求
  • 修正了原脚本里FilePath的命名问题(原代码实际取的是文件后缀,不是完整路径,改名为FileSuffix更准确,要是必须保留原列名也可以不改)
  • 加了except块捕获异常,单个文件处理失败不会导致整个脚本停掉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 06:16:21