
本文介绍如何使用python将文件名中开头的四位年份(如“2023_”)提取出来,并追加到主文件名末尾、下划线前,同时保留原始扩展名,适用于批量重命名场景。
本文介绍如何使用python将文件名中开头的四位年份(如“2023_”)提取出来,并追加到主文件名末尾、下划线前,同时保留原始扩展名,适用于批量重命名场景。
在处理大量按年份前缀命名的文档(如 2023_FamilyDrama.pdf)时,常需统一调整命名规范——将年份从开头移至结尾,形成更语义化的格式(如 FamilyDrama_2023.pdf)。该操作核心在于精准分割文件名结构:假设所有文件均符合 <year><separator><rest>.<ext></ext></rest></separator></year> 模式(年份固定为4位,分隔符为 _、- 或空格等),我们可借助字符串切片与 os.path 模块安全完成重命名。
以下为推荐实现方案(兼顾健壮性与可读性):
import os
def move_year_to_end(filename):
"""将文件名中开头的4位年份移至主体后、扩展名前,返回新文件名"""
name, ext = os.path.splitext(filename) # 安全分离扩展名(支持多点名,如 'file.tar.gz')
if len(name) <p>✅ <strong>关键优势说明</strong>: </p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill7554" title="Galileo python sdk"><img
src="https://img.php.cn/upload/skill/000/000/081/179154376921467.jpg" alt="Galileo python sdk" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill7554" title="Galileo python sdk" class="overflowclass">Galileo python sdk</a>
<p class="overflowclass">Galileo AI 平台 Python SDK 完整参考,用于评估、监控和保护 GenAI 应用,适用于构建 Python 应用。</p>
</div>
<a rel="nofollow" href="/xiazai/skill7554" title="Galileo python sdk" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
- 使用
os.path.splitext()替代str.split('.'),正确处理含多个点的文件名(如report.v2.pdf); - 添加年份有效性校验(1900–2100),避免误匹配(如
1234_file.txt); - 自动清理年份后的常见分隔符(
_,-, 空格等),提升兼容性; - 重命名前显式判断是否变更,避免无意义操作;
- 异常捕获确保单个文件失败不影响整体流程。
⚠️ 重要提醒:
- 务必提前备份原始文件,重命名不可逆;
- 若文件名结构不统一(如年份位置不定、长度不一),建议先用正则表达式(
re.match(r'^(\d{4})[\s_-]+(.+)$', name))增强解析鲁棒性; - 在生产环境运行前,建议先用
print()替代os.rename()进行模拟预览。
通过以上方法,您可高效、安全地完成年份后置的标准化重命名任务,为后续文件管理与自动化流程奠定清晰基础。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










