快速从多个文件夹下的特定文件夹提取相同类型的文件

有时候需要把一个文件夹下的多个文件夹里面特定文件夹的文件汇总到一个文件夹,该方法可解决,编程新手,欢迎大佬提供建议,简化代码,感觉多次遍历能简化。

该方法是本人需要从笔记文件里面提取md文件而写的,适应面不广,第一次发博,欢迎大家批评指正。

import shutil
from os.path import join
from os import listdir

# path 就是我们要查找的文件的上两级目录
# new_dirs 就是我们最后要把文件保存的目录(必须先创建)
# target_dirs 就是文件所在文件夹的名称
path = input('输入绝对路径:(需移动文件的上!两!级目录)')
new_dirs = input('输入要保存至的新绝对路径:')
target_dirs = input('文件存储所在文件夹名:')
file_type = input('文件类型:')

def fast_copy(path,new_dirs,target_dirs,file_type):
    # 把目录下的文件名变为列表
    tool_dirs = listdir(path)
    # 再以小见大,遍历,从一个文件夹去思考操作
    for first_dirs in tool_dirs:
        print(first_dirs)
        # 定义进一步的路径
        path_deeper = path + '\\' +first_dirs
        # 将进一步目录下的文件名变为列表,然后遍历查找最终的目的文件夹
        deeper_dirs = listdir(path_deeper)
        for ojbk_dirs in deeper_dirs:
            # 找到最终文件夹,并且定义最终路径
            if ojbk_dirs == target_dirs:
                finally_dir = path_deeper + '\\' + target_dirs
                print(finally_dir)
                for file
### Python 批量复制多文件夹中的文件到指定文件夹 为了实现从多个文件夹提取文件并将其复制到一个目标文件夹的功能,可以使用 `shutil` 和 `os` 模块。以下是完整的解决方案: #### 解决方案概述 可以通过遍历源目录及其子目录找到所有符合条件的文件,并将这些文件逐一复制到目标文件夹中。此过程涉及以下几个核心操作: 1. 使用 `os.walk()` 遍历源目录树。 2. 利用条件筛选特定类型文件(如果需要)。 3. 调用 `shutil.copy()` 将文件复制到目标路径。 #### 示例代码 以下是一个通用的示例代码,展示如何批量复制多个文件夹中的文件到指定的目标文件夹: ```python import os import shutil def copy_files_from_multiple_folders(source_dir, target_dir, file_extension=None): """ 从多个文件夹中复制文件到指定的目标文件夹 参数: source_dir (str): 源目录路径,包含要复制的文件。 target_dir (str): 目标目录路径,用于存储复制后的文件。 file_extension (str, optional): 文件扩展名过滤器,默认为 None 表示不过滤。 """ if not os.path.exists(target_dir): os.makedirs(target_dir) for root, dirs, files in os.walk(source_dir): for file in files: if file_extension is None or file.endswith(file_extension): src_file_path = os.path.join(root, file) dst_file_path = os.path.join(target_dir, file) # 如果目标文件已存在,则跳过或覆盖 try: shutil.copy(src_file_path, dst_file_path) print(f"Copied {src_file_path} to {dst_file_path}") except Exception as e: print(f"Error copying {src_file_path}: {e}") # 示例调用 source_directory = r"F:\编程题题库\python编程题数据集和代码468" target_directory = r"F:\编程题题库\汇总文件夹" copy_files_from_multiple_folders(source_directory, target_directory, ".py") ``` #### 关键点解析 1. **`os.walk()` 的作用**: 它会递归地遍历给定目录下的所有子目录和文件[^2]。每次迭代返回当前路径 (`root`)、该路径下的子目录列表 (`dirs`) 和文件列表 (`files`)。 2. **文件筛选逻辑**: 可以通过设置 `file_extension` 参数来限定只处理某种类型文件(如 `.py`, `.txt`)。如果没有提供扩展名,则默认处理所有文件[^3]。 3. **异常处理**: 复制过程中可能会遇到权限不足或其他错误情况,因此加入了简单的异常捕获机制以便调试[^1]。 4. **目标文件夹不存在的情况**: 若目标文件夹尚不存在,则先通过 `os.makedirs()` 创建它。 --- #### 注意事项 - 当前代码假设不会发生同名文件冲突;如果有需求解决这种情况,可以在复制之前检查目标路径是否存在相同名称的文件,并采取改名策略。 - 对于非常大的文件集合或者深层嵌套结构,可能需要注意性能优化以及内存占用问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值