Python自动化实现批量重命名文件

Written by

in

文章目录
  • 工作中经常遇到需要批量处理文件的场景:下载的图片需要统一命名、报告需要按日期排序、项目文件需要规范化……手动一个个改?太浪费时间了! 今天教你用 Python 几行代码搞定批量重命名,从此告别重复劳动。
  • 假设你有一个文件夹,里面有一堆下载的图片: 下载文件夹/├── IMG_20240227_001.jpg├── IMG_20240227_002.jpg├── IMG_20240227_003.jpg└── … 你想把它们改成更有意义的名称,比如 项目截图_001.jpg、项目截图_002.jpg 这样。
  • import os def batch_rename(folder_path, prefix): “”” 批量重命名文件 folder_path: 文件夹路径 prefix: 新文件名前缀 “”” # 获取文件夹内所有文件 files = os.listdir(folder_path) # 过滤出图片文件 image_files = [f for f in files if f.endswith((‘.jpg’, ‘.png’, ‘.jpeg’))] # 排序,确保顺序一致 image_files.sort() # 批量重命名 for index, old_name in enumerate(image_files, start=1): # 获取文件扩展名 ext = os.path.splitext(old_name)[1] # 生成新文件名 new_name = f”{prefix}_{index:03d}{ext}” # 构建完整路径 old_path = os.path.join(folder_path, old_name) new_path = os.path.join(folder_path, new_name) # 重命名 os.rename(old_path, new_path) print(f”{old_name} -> {new_name}”) # 使用示例 folder = “/Users/你的用户名/Downloads/下载文件夹” batch_rename(folder, “项目截图”)
  • os.listdir() – 列出文件夹内所有文件 os.path.splitext() – 分离文件名和扩展名 os.path.join() – 安全地拼接路径(兼容 Windows 和 Mac) os.rename() – 执行重命名操作 f"{prefix}_{index:03d}" – 格式化字符串,03d 表示 3 位数字,不足补零
  • 备份重要文件 – 重命名前最好备份,避免误操作 测试小批量 – 先用几个文件测试,确认无误再批量处理 处理冲突 – 如果新文件名已存在,会报错,需要额外处理
  • import os import shutil def safe_batch_rename(folder_path, prefix): files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] files.sort() renamed = [] for index, old_name in enumerate(files, start=1): ext = os.path.splitext(old_name)[1] new_name = f”{prefix}_{index:03d}{ext}” old_path = os.path.join(folder_path, old_name) new_path = os.path.join(folder_path, new_name) # 避免覆盖已有文件 if os.path.exists(new_path): print(f”跳过:{new_name} 已存在”) continue try: os.rename(old_path, new_path) renamed.append((old_name, new_name)) print(f”✓ {old_name} -> {new_name}”) except Exception as e: print(f”✗ {old_name} 失败: {e}”) print(f”n完成!共处理 {len(renamed)} 个文件”) return renamed
  • 批量重命名只是 Python 自动化办公的入门,掌握了 os 模块的基础操作,你就可以: 批量移动/复制文件 自动整理文件夹 生成报告文档 到此这篇关于Python自动化实现批量重命名文件的文章就介绍到这了,更多相关Python批量重命名文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 使用python编写一个批量重命名文件的小工具 使用Python脚本批量搞定所有文件重命名 Python文件管理之批量重命名文件详解 使用Python脚本轻松实现文件的批量重命名 基于Python实现自动化文件管理(分类、重命名和备份) Python实现文件批量重命名器 使用Python实现文件重命名的三种方法
  • 目录
    • 前言
    • 场景描述
    • 代码实现
    • 代码解析
    • 进阶用法
      • 添加时间戳
      • 正则表达式替换
    • 注意事项
      • 完整安全版本
        • 总结

          工作中经常遇到需要批量处理文件的场景:下载的图片需要统一命名、报告需要按日期排序、项目文件需要规范化……手动一个个改?太浪费时间了!

          今天教你用 Python 几行代码搞定批量重命名,从此告别重复劳动。

          假设你有一个文件夹,里面有一堆下载的图片:

          下载文件夹/
          ├── IMG_20240227_001.jpg
          ├── IMG_20240227_002.jpg
          ├── IMG_20240227_003.jpg
          └── …

          你想把它们改成更有意义的名称,比如 项目截图_001.jpg项目截图_002.jpg 这样。

          import os
          
          def batch_rename(folder_path, prefix):
              """
              批量重命名文件
              folder_path: 文件夹路径
              prefix: 新文件名前缀
              """
              # 获取文件夹内所有文件
              files = os.listdir(folder_path)
              
              # 过滤出图片文件
              image_files = [f for f in files if f.endswith(('.jpg', '.png', '.jpeg'))]
              
              # 排序,确保顺序一致
              image_files.sort()
              
              # 批量重命名
              for index, old_name in enumerate(image_files, start=1):
                  # 获取文件扩展名
                  ext = os.path.splitext(old_name)[1]
                  
                  # 生成新文件名
                  new_name = f"{prefix}_{index:03d}{ext}"
                  
                  # 构建完整路径
                  old_path = os.path.join(folder_path, old_name)
                  new_path = os.path.join(folder_path, new_name)
                  
                  # 重命名
                  os.rename(old_path, new_path)
                  print(f"{old_name} -> {new_name}")
          
          # 使用示例
          folder = "/Users/你的用户名/Downloads/下载文件夹"
          batch_rename(folder, "项目截图")
          

          os.listdir() – 列出文件夹内所有文件

          os.path.splitext() – 分离文件名和扩展名

          os.path.join() – 安全地拼接路径(兼容 Windows 和 Mac)

          os.rename() – 执行重命名操作

          f"{prefix}_{index:03d}" – 格式化字符串,03d 表示 3 位数字,不足补零

          from datetime import datetime
          
          def rename_with_timestamp(folder_path):
              files = os.listdir(folder_path)
              today = datetime.now().strftime("%Y%m%d")
              
              for index, old_name in enumerate(files, start=1):
                  ext = os.path.splitext(old_name)[1]
                  new_name = f"{today}_{index:03d}{ext}"
                  # ... 重命名代码
          

          import re
          
          def rename_with_regex(folder_path, pattern, replacement):
              """使用正则替换文件名中的特定内容"""
              files = os.listdir(folder_path)
              
              for old_name in files:
                  new_name = re.sub(pattern, replacement, old_name)
                  if new_name != old_name:
                      # ... 重命名代码
          

          备份重要文件 – 重命名前最好备份,避免误操作

          测试小批量 – 先用几个文件测试,确认无误再批量处理

          处理冲突 – 如果新文件名已存在,会报错,需要额外处理

          import os
          import shutil
          
          def safe_batch_rename(folder_path, prefix):
              files = [f for f in os.listdir(folder_path) 
                       if os.path.isfile(os.path.join(folder_path, f))]
              files.sort()
              
              renamed = []
              for index, old_name in enumerate(files, start=1):
                  ext = os.path.splitext(old_name)[1]
                  new_name = f"{prefix}_{index:03d}{ext}"
                  
                  old_path = os.path.join(folder_path, old_name)
                  new_path = os.path.join(folder_path, new_name)
                  
                  # 避免覆盖已有文件
                  if os.path.exists(new_path):
                      print(f"跳过:{new_name} 已存在")
                      continue
                      
                  try:
                      os.rename(old_path, new_path)
                      renamed.append((old_name, new_name))
                      print(f"✓ {old_name} -> {new_name}")
                  except Exception as e:
                      print(f"✗ {old_name} 失败: {e}")
              
              print(f"n完成!共处理 {len(renamed)} 个文件")
              return renamed
          

          批量重命名只是 Python 自动化办公的入门,掌握了 os 模块的基础操作,你就可以:

          • 批量移动/复制文件
          • 自动整理文件夹
          • 生成报告文档

          到此这篇关于Python自动化实现批量重命名文件的文章就介绍到这了,更多相关Python批量重命名文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

          您可能感兴趣的文章:

          • 使用python编写一个批量重命名文件的小工具
          • 使用Python脚本批量搞定所有文件重命名
          • Python文件管理之批量重命名文件详解
          • 使用Python脚本轻松实现文件的批量重命名
          • 基于Python实现自动化文件管理(分类、重命名和备份)
          • Python实现文件批量重命名器
          • 使用Python实现文件重命名的三种方法

          站内搜索