python实现自增文件名唯一

在保存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)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值