Python 自动给重名文件名添加序号

目录

检查给定的文件路径是否已经重名,并自动添加序号,递增数字。

Code on Github Gist

def auto_rename_exist_filename(file_path):
    """
    For example: a.txt, a(1).txt, a(2).txt
    Source: https://gist.github.com/nodewee/9ae9b0b461b4bcaf30bc2b84ca8c4743.js
    """
    if not os.path.exists(file_path):
        return file_path

    dir_path = os.path.dirname(file_path)
    src_filename = os.path.basename(file_path)
    [file_title, ext_name] = os.path.splitext(src_filename)

    pattern = r"\((\d+?)\)$"
    r = re.search(pattern, file_title)
    if r:
        serial = str(int(r.groups()[0]) + 1)
        new_title = re.sub(pattern, "(" + serial + ")", file_title)
    else:
        new_title = file_title + "(1)"

    new_filepath = os.path.join(dir_path, new_title + ext_name)

    if os.path.exists(new_filepath):
        return auto_rename_exist_filename(new_filepath)
    else:
        return new_filepath