python 批量去除文件名

背景:

下载了一批电视剧,每个电视剧都有一个后缀名。

想把它去掉。

 

解决:

咨询AI,解决了。

 

代码:

import os


def rename_files_recursive(directory_path, target_string="www.123.com", preview_mode=True):
    """
    递归重命名所有子目录中的文件
    """

    if not os.path.exists(directory_path):
        print(f"目录 {directory_path} 不存在")
        return

    all_files_to_rename = []

    # 递归遍历所有文件
    for root, dirs, files in os.walk(directory_path):
        for filename in files:
            if target_string in filename:
                old_path = os.path.join(root, filename)
                new_filename = filename.replace(target_string, "")
                new_path = os.path.join(root, new_filename)

                all_files_to_rename.append({
                    'old_name': filename,
                    'new_name': new_filename,
                    'old_path': old_path,
                    'new_path': new_path,
                    'directory': root
                })

    if not all_files_to_rename:
        print(f"没有找到包含 '{target_string}' 的文件")
        return

    # 按目录分组显示
    print(f"在所有子目录中找到 {len(all_files_to_rename)} 个包含 '{target_string}' 的文件:")
    print("=" * 80)

    current_dir = ""
    for file_info in all_files_to_rename:
        if file_info['directory'] != current_dir:
            current_dir = file_info['directory']
            print(f"\n📁 目录: {current_dir}")
            print("-" * 60)

        print(f"   原文件名: {file_info['old_name']}")
        print(f"   新文件名: {file_info['new_name']}")
        print()

    if preview_mode:
        print("⚠️  当前为预览模式,文件未被实际重命名")
        return all_files_to_rename

    # 执行重命名
    renamed_count = 0
    for file_info in all_files_to_rename:
        try:
            if os.path.exists(file_info['new_path']):
                print(f"❌ 跳过: {file_info['old_name']} -> 目标文件已存在")
                continue

            os.rename(file_info['old_path'], file_info['new_path'])
            print(f"✅ 成功: {file_info['old_name']} -> {file_info['new_name']}")
            renamed_count += 1

        except Exception as e:
            print(f"❌ 失败: {file_info['old_name']} -> 错误: {e}")

    print(f"\n重命名完成!成功处理 {renamed_count} 个文件")
    return renamed_count


# 使用示例
directory = r"D:\movie\鱿鱼游戏\Squid.Game.S02"
rename_files_recursive(directory, "[电影港www.dygangs.me]", preview_mode=False)

 

注意:

这里

preview_mode = True 

 为True就是预览模式,
为False就是正式修改。

字符串里的内容就是要删掉的内容。

ok大功告成!

 

致谢:

Claude Sonnet 4 Think 

 

posted @ 2025-06-16 21:49  77gg  阅读(28)  评论(0)    收藏  举报