You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 如何实现重复文件自动递增命名 避免重复追加_数字后缀问题

重复文件命名系统实现方案

核心解决思路

  • 使用正则表达式匹配文件名末尾任意长度的数字后缀,解决单数字匹配的局限性
  • 识别到已有数字后缀时直接递增数字,没有则新增_1后缀,避免重复拼接_1的问题

优化后实现代码

import os
import re

# 单文件生成副本命名通用方法
def generate_duplicate_filename(original_name):
    # 分割文件名主体和扩展名
    name_body, extension = os.path.splitext(original_name)
    # 匹配末尾的 _数字 后缀,\d+匹配任意长度数字,$表示匹配到字符串末尾
    match_res = re.search(r'_(\d+)$', name_body)
    if match_res:
        # 提取数字并+1,替换原有数字后缀
        old_num = int(match_res.group(1))
        new_body = name_body[:match_res.start()] + f'_{old_num + 1}'
    else:
        # 没有数字后缀则新增_1
        new_body = f'{name_body}_1'
    return f'{new_body}{extension}'

# 适配你原有业务逻辑的修改版本
name_change = False
original_name = self.images_names[self.current_index]
name_body, extension = os.path.splitext(original_name)
match_res = re.search(r'_(\d+)$', name_body)
if match_res:
    old_num = int(match_res.group(1))
    new_name = f"{name_body[:match_res.start()]}_{old_num + 1}{extension}"
    name_change = True

if not name_change:
    new_name = f"{name_body}_1{extension}"

self.images_names.insert(self.current_index + 1, new_name)

效果验证

原始文件名生成的副本文件名
hotdog.jpghotdog_1.jpg
hotdog_1.jpghotdog_2.jpg
hotdog_13.jpghotdog_14.jpg
test_file_v2.jpgtest_file_v2_1.jpg

内容的提问来源于stack exchange,提问作者user16209051

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:57:03