当前位置: 首页 > news >正文

【Python 小脚本·大用途 · 第 1 篇】

1. 痛点 100 字

手机导出的照片叫 IMG_20240601_143022.jpg?下载的美剧是 S01E01 1080p x265.mkv?手动改名太痛苦,尤其一次几十上百个文件。今天用 25 行 Python 脚本,让它们瞬间变成 2024-06-01_001.jpgS01E01-绝命毒师.mkv,还支持正则自定义。


2. 脚本 25 行

#!/usr/bin/env python3
# rename_batch.py
import re, os, sys
from pathlib import Pathdef batch_rename(folder, pattern, repl, start_index=1):"""folder     : 目标文件夹pattern    : 正则表达式,用来捕获旧文件名中的片段repl       : 新文件名模板,可用 \1 \2 引用捕获组start_index: 数字序号起始值"""folder = Path(folder)files = sorted(folder.iterdir(), key=lambda p: p.name)  # 按文件名排序for idx, path in enumerate(files, start=start_index):if not path.is_file():continuenew_name = re.sub(pattern, repl.format(idx=idx), path.name)if new_name == path.name:  # 避免同名覆盖continuenew_path = path.with_name(new_name)print(f"{path.name}  -->  {new_name}")path.rename(new_path)if __name__ == "__main__":if len(sys.argv) < 4:print("用法: python rename_batch.py 文件夹 正则 新模板 [起始序号]")print("示例: python rename_batch.py ./pics 'IMG_(\\d{8})_(\\d{6})' '\\1_\\2_{idx:03d}.jpg'")sys.exit(1)folder, pattern, repl = sys.argv[1:4]start = int(sys.argv[4]) if len(sys.argv) > 4 else 1batch_rename(folder, pattern, repl, start)

3. 一行运行命令

批量把 photos/ 里的 IMG_20240601_143022.jpg 等重命名成 20240601_143022_001.jpg

python rename_batch.py ./photos 'IMG_(\d{8})_(\d{6})\.jpg' '\1_\2_{idx:03d}.jpg'

4. 效果示例

运行前

photos/
├── IMG_20240601_143022.jpg
├── IMG_20240601_143023.jpg
└── IMG_20240601_143024.jpg

运行后

photos/
├── 20240601_143022_001.jpg
├── 20240601_143023_002.jpg
└── 20240601_143024_003.jpg

5. 可选参数 & 常见坑

• 正则里捕获组用括号 (){idx:03d} 表示 3 位数字补零。
• Windows 路径有空格请加引号:"./My Photos"
• 若出现同名文件,脚本会跳过并提示,不会覆盖。
• 想还原?把脚本第 21 行 path.rename(new_path) 改成 print(...) 先 dry-run 检查。

把脚本丢进系统 PATH,以后任何文件夹右键「在终端打开」即可一键改名,爽!

http://www.dtcms.com/a/324562.html

相关文章:

  • 在VMware中安装统信UOS桌面专业版
  • Python 的浅拷贝 vs 深拷贝(含嵌套可变对象示例与踩坑场景)
  • 基础算法(11)——栈
  • 【3D图像技术分析与实现】CityGaussianV2 工作解析
  • log4cpp、log4cplus 与 log4cxx 三大 C++ 日志框架
  • 机器学习数学基础:46.Mann-Kendall 序贯检验(Sequential MK Test)
  • Java集合框架、Collection体系的单列集合
  • 有限元方法中的数值技术:追赶法求解三对角方程
  • 【鸿蒙/OpenHarmony/NDK】什么是NDK? 为啥要用NDK?
  • PCB知识07 地层与电源层
  • LLIC:基于自适应权重大感受野图像变换编码的学习图像压缩
  • 每日一题:使用栈实现逆波兰表达式求值
  • Redis高级
  • AAAI 2025丨具身智能+多模态感知如何精准锁定目标
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ray’问题
  • Python数据分析常规步骤整理
  • Mysql系列--5、表的基本查询(下)
  • Speaking T2 - Dining Hall to CloseDuring Spring Break
  • 机器学习 DBScan
  • 一键复制产品信息到剪贴板
  • 【接口自动化】初识pytest,一文讲解pytest的安装,识别规则以及配置文件的使用
  • 网闸技术解析:如何实现对国产数据库(达梦/金仓)的深度支持
  • AI 代理框架:使用正确的工具构建更智能的系统
  • 网络小工具发布 IPPw
  • 机器学习之K-means(K-均值)算法
  • 七、CV_模型微调
  • SpringBoot学习日记(三)
  • P1152 欢乐的跳
  • 从零开始实现Qwen3(MOE架构)
  • C语言基础05——指针