python(68) : 提前文件夹所有图片, 重名处理
import os import shutil from pathlib import Path # 源目录和目标目录 SOURCE_DIR = r"E:\工作台\87_牧原POC\豆包安装包" TARGET_DIR = r"E:\工作台\87_牧原POC\豆包素材" # 支持的图片格式 IMAGE_EXTENSIONS = {'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp', '.svg', '.ico', '.tiff', '.tif'} def get_unique_filename(target_path): """如果文件存在,在文件名后面添加 _n""" path = Path(target_path) if not path.exists(): return target_path base = path.stem ext = path.suffix parent = path.parent counter = 1 while True: new_name = f"{base}_{counter}{ext}" new_path = parent / new_name if not new_path.exists(): return str(new_path) counter += 1 def copy_images_recursive(): """递归复制所有图片文件""" source_path = Path(SOURCE_DIR) target_path = Path(TARGET_DIR) # 确保目标目录存在 target_path.mkdir(exist_ok=True) copied_count = 0 skipped_count = 0 print(f"开始扫描: {SOURCE_DIR}") print(f"目标目录: {TARGET_DIR}") print("-" * 50) # 递归遍历源目录 for root, dirs, files in os.walk(source_path): for file in files: file_ext = Path(file).suffix.lower() # 检查是否是图片文件 if file_ext in IMAGE_EXTENSIONS: source_file = Path(root) / file target_file = target_path / file # 处理同名文件 final_target = get_unique_filename(target_file) # 如果文件名没有改变(原文件不存在),直接复制 # 如果文件名改变了(有重名),使用新文件名 try: shutil.copy2(source_file, final_target) copied_count += 1 status = "重命名复制" if final_target != str(target_file) else "复制" print(f"[{status}] {file} -> {Path(final_target).name}") except Exception as e: print(f"[错误] 无法复制 {file}: {e}") print("-" * 50) print(f"完成! 共复制 {copied_count} 个图片文件") if __name__ == "__main__": copy_images_recursive()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1191135.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!