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.jpg | hotdog_1.jpg |
| hotdog_1.jpg | hotdog_2.jpg |
| hotdog_13.jpg | hotdog_14.jpg |
| test_file_v2.jpg | test_file_v2_1.jpg |
内容的提问来源于stack exchange,提问作者user16209051
相关产品推荐
相关产品推荐

