一键给文件夹内所有MP3重命名

需求场景:

手里有个音频课程资源,上百集mp3,但文件名不是自己想要的,可以利用python来一键将文件夹里的音频按照自己的命名方式命名并且可以按顺序播放(文件名以数字开头,依次往下排序)。

具体代码:

import os
import re
import shutil


def batch_rename_mp3(folder_path, example_name):
    """
    按顺序重命名文件夹内的MP3文件
    :param folder_path: 需要重命名的文件夹路径
    :param example_name: 命名模板示例(如"001音频课程.mp3")
    """
    # 检查文件夹是否存在
    if not os.path.isdir(folder_path):
        raise FileNotFoundError(f"文件夹 {folder_path} 不存在")

    # 解析示例文件名
    example_base = os.path.splitext(example_name)[0]  # 去除扩展名
    match = re.match(r'^(\d+)(.*)', example_base)
    if not match:
        raise ValueError("示例文件名必须包含数字开头的编号(如'001音频课程')")

    start_num = int(match.group(1))  # 提取起始编号
    num_length = len(match.group(1))  # 获取编号位数
    fixed_text = match.group(2).strip()  # 获取固定文本部分

    # 获取文件夹中所有MP3文件(不区分大小写)
    all_files = [f for f in os.listdir(folder_path)
                 if f.lower().endswith('.mp3')]

    # 按文件名升序排序(可修改为其他排序方式)
    all_files.sort()

    # 检查文件数量
    if not all_files:
        print("警告:文件夹中没有MP3文件")
        return

    # 开始重命名
    for index, filename in enumerate(all_files):
        # 生成新编号(三位数补零格式)
        new_number = start_num + index
        new_filename = f"{new_number:0{num_length}d}{fixed_text}.mp3"

        # 构建完整路径
        src_path = os.path.join(folder_path, filename)
        dst_path = os.path.join(folder_path, new_filename)

        # 处理文件名冲突
        if os.path.exists(dst_path):
            print(f"冲突跳过:{new_filename} 已存在")
            continue

        # 执行重命名
        shutil.move(src_path, dst_path)
        print(f"已重命名:{filename} → {new_filename}")


if __name__ == "__main__":
    # 用户输入(实际使用时可以改为直接赋值)
    target_folder = input("请输入文件夹路径:").strip()
    name_template = input("请输入命名模板(如'001音频课程.mp3'):").strip()

    # 执行重命名
    try:
        batch_rename_mp3(target_folder, name_template)
        print("\n操作完成!")
    except Exception as e:
        print(f"\n发生错误:{str(e)}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值