python递归提取文件夹下指定类型的文件到某个文件夹

递归提取文件夹下指定类型的文件到某个文件夹


import os
import shutil

def copy_files_by_type(source_dir, target_dir, file_extensions):
    """
    递归遍历源目录,将指定类型的文件复制到目标目录。
    
    :param source_dir: 源目录路径
    :param target_dir: 目标目录路径
    :param file_extensions: 文件扩展名列表,如 ['.txt', '.py']
    """
    # 确保目标目录存在
    os.makedirs(target_dir, exist_ok=True)

    # 遍历源目录
    for root, dirs, files in os.walk(source_dir):
        for file in files:
            # 检查文件扩展名是否匹配
            if any(file.endswith(ext) for ext in file_extensions):
                source_path = os.path.join(root, file)
                target_path = os.path.join(target_dir, file)
                
                # 如果目标目录中已存在同名文件,则重命名
                counter = 1
                original_target_path = target_path
                while os.path.exists(target_path):
                    name, ext = os.path.splitext(original_target_path)
                    target_path = f"{name}_{counter}{ext}"
                    counter += 1
                
                # 复制文件
                shutil.copy2(source_path, target_path)
                print(f"Copied: {source_path} -> {target_path}")

if __name__ == "__main__":
    # 示例输入输出路径
    source_directory = "C:\\Users\\Luke\\Desktop\\image"
    target_directory = "C:\\Users\\Luke\\Desktop\\image"
    extensions_input = '.jpg,.jpeg,.heic'
    # 自定义文件类型
    file_extensions = [ext.strip() for ext in extensions_input.split(",") if ext.strip()]

    copy_files_by_type(source_directory, target_directory, file_extensions)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值