使用Python基于Dataframe按Id创建文件夹并归类图片
实现按Id分类整理图片的Python方案
没问题,这事儿很容易搞定!我给你写一段实用的代码,帮你自动按Id创建文件夹并归类图片。先理清楚逻辑:我们先把Dataframe按Id分组,然后为每个Id创建对应的文件夹,最后把同组的图片移动过去。
完整代码示例
import pandas as pd import os import shutil # 1. 定义关键路径 # 目标根文件夹(要创建子文件夹的地方) root_folder = 'F:/Images/' # 原始图片所在的路径(假设你的图片都存在这里,记得改成你实际的路径) source_image_path = './' # 比如如果图片在当前目录就用这个,或者改成'F:/OriginalImages/'之类的 # 2. 模拟你的Dataframe(如果已经有现成的df,直接用自己的就行) data = { 'Image': ['00022e1a.jpg', '000466c4.jpg', '00087b01.jpg', '001296d5.jpg', '0014cfdf.jpg', '0025e8c2.jpg', '0026a8ab.jpg'], 'Id': ['w_e', 'w_1', 'w_e', 'w_1', 'w_2', 'w_3', 'w_1'] } df = pd.DataFrame(data) # 3. 按Id分组处理 for id_name, group in df.groupby('Id'): # 创建对应Id的文件夹,不存在则创建 target_folder = os.path.join(root_folder, id_name) if not os.path.exists(target_folder): os.makedirs(target_folder) print(f"已创建文件夹: {target_folder}") # 遍历组内的每张图片,移动到目标文件夹 for image_name in group['Image']: source_file = os.path.join(source_image_path, image_name) target_file = os.path.join(target_folder, image_name) # 检查原始文件是否存在,避免报错 if os.path.exists(source_file): # 移动文件,如果目标已有同名文件会覆盖,若想跳过可以加判断 shutil.move(source_file, target_file) print(f"已移动图片: {image_name} -> {target_folder}") else: print(f"警告:未找到图片文件 {source_file},跳过")
注意事项
- 路径修改:一定要把
source_image_path改成你实际存放图片的路径,不然会找不到文件哦! - 权限问题:确保你的Python程序有对
F:/Images/的写入权限,不然创建文件夹会失败。 - 重复文件处理:如果目标文件夹里已经有同名图片,
shutil.move会直接覆盖它。如果你想保留原文件,可以把shutil.move改成shutil.copy,或者加个判断跳过已存在的文件。 - Dataframe使用:如果你的Dataframe是从其他地方读取的(比如CSV),直接替换掉模拟的
df就行,不用改后面的逻辑。
运行这段代码后,就会自动生成你要的文件夹结构,所有图片都会乖乖待在对应的文件夹里啦!
内容的提问来源于stack exchange,提问作者user2324278
相关产品推荐
相关产品推荐

