You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从最后处理的文件夹恢复中断的递归文件处理任务?

从指定文件夹继续递归处理电子书文件

完全可以实现。你只需要给原函数添加一个「起始文件夹」参数,在遍历过程中跳过该文件夹之前的目录,仅当进入目标文件夹及其子目录时才执行处理逻辑。

修改后的代码如下:

import os

def process_files_not_in_hidden_folder(path: str, extension: str, start_from_folder: str = None) -> None:
    """
    递归遍历父文件夹下所有文件(跳过隐藏文件夹),
    可指定起始文件夹,仅处理该文件夹及其子目录内的目标文件
    """
    # 规范化起始文件夹路径(避免路径格式不一致导致判断错误)
    target_path = os.path.normpath(start_from_folder) if start_from_folder else None

    for root, subdirs, filenames in os.walk(path):
        # 过滤隐藏子文件夹
        subdirs[:] = [d for d in subdirs if not d[0] == '.']
        
        # 如果指定了起始文件夹,判断当前目录是否需要跳过
        if target_path:
            normalized_root = os.path.normpath(root)
            # 若当前目录不是起始文件夹的子目录,也不是起始文件夹本身,跳过处理
            if not normalized_root == target_path and not normalized_root.startswith(target_path + os.sep):
                continue
        
        # 处理当前目录下的目标文件
        for filename in filenames:
            if filename.endswith(extension):
                meta_file = os.path.join(root, filename)
                export_tags(meta_file)

使用说明:

  • 从头处理:直接调用原参数即可:process_files_not_in_hidden_folder("/你的根目录", ".epub")
  • 从指定文件夹续处理:传入start_from_folder参数:process_files_not_in_hidden_folder("/你的根目录", ".epub", "/最后处理完成的文件夹路径")

注意事项:

  • 确保start_from_folder是根目录path下的子文件夹,否则会跳过所有文件
  • 优先使用绝对路径,避免相对路径带来的判断错误
  • 可以在export_tags函数中添加日志逻辑,把当前处理的文件夹路径写入临时文件,下次启动时读取该路径作为start_from_folder的值,实现自动续跑

内容的提问来源于stack exchange,提问作者user19924240

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:01:18