场景:
有一堆mp3音频文件杂乱无章地存放在一堆文件夹里,文件夹里可能还有文件夹,里面除了有mp3文件,还有word/pdf文档,现在想将总的文件夹及其子文件夹中的所有MP3文件提取出来,放到指定路径存储。
直接上代码,亲测有效,有问题欢迎留言!
import os
import shutil
def copy_mp3_files(source_dir, target_dir):
"""
将源目录及其子目录中的所有MP3文件复制到目标目录
:param source_dir: 源目录路径
:param target_dir: 目标目录路径
"""
# 创建目标目录(如果不存在)
os.makedirs(target_dir, exist_ok=True)
# 计数器统计复制的文件数量
count = 0
# 遍历源目录及其所有子目录
for root, _, files in os.walk(source_dir):
for filename in files:
# 检查文件扩展名是否为.mp3(不区分大小写)
if filename.lower().endswith('.mp3'):
# 构建完整文件路径
source_path = os.path.join(root, filename)
# 处理目标路径中的重复文件名
base_name, ext = os.path.splitext(filename)
dest_path = os.path.join(target_dir, filename)
duplicate_num = 1
# 如果文件名存在,添加序号直到唯一
while os.path.exists(dest_path):
new_name = f"{base_name}_{duplicate_num}{ext}"
dest_path = os.path.join(target_dir, new_name)
duplicate_num += 1
# 复制文件并保留元数据
shutil.copy2(source_path, dest_path)
print(f"已复制:{source_path} -> {dest_path}")
count += 1
print(f"\n操作完成!共复制 {count} 个MP3文件。")
if __name__ == "__main__":
# 设置源目录和目标目录(请修改为实际路径)
SOURCE_DIRECTORY = r"H:\原文件存放" # 替换为你的源目录
TARGET_DIRECTORY = r"H:\整理后存放" # 替换为目标目录
# 执行复制操作
copy_mp3_files(SOURCE_DIRECTORY, TARGET_DIRECTORY)