如何从最后处理的文件夹恢复中断的递归文件处理任务?
从指定文件夹继续递归处理电子书文件
完全可以实现。你只需要给原函数添加一个「起始文件夹」参数,在遍历过程中跳过该文件夹之前的目录,仅当进入目标文件夹及其子目录时才执行处理逻辑。
修改后的代码如下:
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
相关产品推荐
相关产品推荐

