如何筛选指定图片并在单/批量项目文件夹内创建子目录存储?
解决方案
1. 单个Project文件夹处理
用Python脚本可快速完成自动化操作,无需手动筛选复制:
import os import shutil # 定义要筛选的目标图片文件名 target_files = ["img_5", "img_10", "img_30", "img_88", "img_61"] # 注意:如果图片带后缀(如.jpg/.png),需补充完整文件名,比如"img_5.jpg" # 源文件夹路径 source_dir = "./Project" # 目标子文件夹路径 dest_dir = os.path.join(source_dir, "the odd ones") # 创建目标文件夹(不存在则自动创建) os.makedirs(dest_dir, exist_ok=True) # 遍历源文件夹文件并复制目标文件 for filename in os.listdir(source_dir): file_path = os.path.join(source_dir, filename) if filename in target_files and os.path.isfile(file_path): shutil.copy2(file_path, os.path.join(dest_dir, filename)) print(f"已复制:{filename}")
补充说明
shutil.copy2会保留文件元数据(如创建时间),若仅需复制文件内容,改用shutil.copy即可- 若
Project文件夹不在脚本同目录,将source_dir改为绝对路径(如"D:/Work/Project")
2. 批量Projects_1至Projects_99文件夹处理
在单个文件夹逻辑基础上,增加批量遍历文件夹的逻辑即可:
import os import shutil target_files = ["img_5", "img_10", "img_30", "img_88", "img_61"] # 同样注意:图片带后缀时需补充完整文件名 # 遍历当前目录下所有Projects_开头的文件夹 for dir_name in os.listdir("./"): dir_path = os.path.join("./", dir_name) if dir_name.startswith("Projects_") and os.path.isdir(dir_path): # 创建当前项目的目标子文件夹 dest_dir = os.path.join(dir_path, "the odd ones") os.makedirs(dest_dir, exist_ok=True) # 复制指定图片到子文件夹 for filename in os.listdir(dir_path): file_path = os.path.join(dir_path, filename) if filename in target_files and os.path.isfile(file_path): shutil.copy2(file_path, os.path.join(dest_dir, filename)) print(f"已从{dir_name}复制:{filename}")
补充说明
- 脚本会自动匹配所有
Projects_前缀的文件夹,无需手动逐个处理 - 若Projects文件夹集中在其他路径,将
os.listdir("./")中的路径改为对应根目录即可
内容的提问来源于stack exchange,提问作者Starlord22
相关产品推荐
相关产品推荐

