在保存image.png时,如果该文件已存在,则序号自动增加1,变为类似image-1.png。如果已存在image-1.png,则变为image-2.png。
【思路】
1.分解输入路径为目录、基名和扩展名。
2.从基名中提取原始基名和可能的数字。例如,image-1分解为原始基名image和数字1。
3.在目录中查找所有符合原始基名-数字.ext的文件,找出最大的数字,然后加1。
【函数实现】
def generate_unique_filename(filepath):
"""智能生成自增文件名(支持处理已含序号的文件路径)"""
filepath1 = os.path.abspath(filepath)
# 分离路径组件
dir_path = os.path.dirname(filepath1) or '.' # 获取目录路径
filename = os.path.basename(filepath1) # 获取完整文件名
base, ext = os.path.splitext(filename) # 分解文件名和扩展名
# 解析原始基名(剥离可能存在的序号)
base_match = re.match(r'^(.*?)(-\d+)?$', base)
original_base = base_match.group(1) # 获取真正的基名
# 构建正则表达式匹配模式
pattern = re.compile(r'^{}-(\d+){}$'.format(
re.escape(original_base),
re.escape(ext)
))
# 查找最大序号
max_num = 0
for f in glob.glob(os.path.join(dir_path, f"{original_base}-*{ext}")):
current_file = os.path.basename(f)
match = pattern.match(current_file)

最低0.47元/天 解锁文章
203

被折叠的 条评论
为什么被折叠?



