Python如何校验多路径文件存在性,缺失则重跑文件保存代码
Python 校验指定路径文件存在性+失败重试实现方案
核心实现思路
- 先把所有目标文件和对应存储路径整理成统一的映射结构,避免写重复的判断代码,后续新增/调整文件路径只需要改配置即可
- 用Python标准库做文件存在性校验,不需要安装第三方依赖,同时区分普通文件和同名文件夹,避免误判
- 加循环重试逻辑,只要检测到任意文件缺失,就重新执行文件保存逻辑,直到所有文件校验通过再执行后续业务
- 建议增加最大重试次数限制,避免因为保存逻辑本身故障导致程序无限死循环
可直接复用的完整代码
import os from typing import Dict # -------------------------- 配置区 按实际情况修改 -------------------------- # 所有文件和对应存储路径的映射,补全剩余2个文件的实际路径即可 FILE_PATH_MAP: Dict[str, str] = { "fileA": "XYZ的实际完整路径/fileA", "fileB": "ZXC的实际完整路径/fileB", "fileC": "XBN的实际完整路径/fileC", "fileD": "对应规则路径/fileD", "fileE": "对应规则路径/fileE" } MAX_RETRY_COUNT = 3 # 最大重试次数,可按需调整 # -------------------------------------------------------------------------- def run_file_save_logic() -> None: """把你原本负责生成、保存所有文件的前置代码放到这个函数里即可""" # 原有文件保存代码写在这里 pass def check_all_files_valid() -> bool: """遍历校验所有文件是否都存在于对应路径""" for filename, filepath in FILE_PATH_MAP.items(): # 同时校验路径存在、且目标是普通文件,排除同名文件夹的误判情况 if not os.path.isfile(filepath): print(f"校验未通过,缺失文件:{filename},预期路径:{filepath}") return False return True if __name__ == "__main__": retry_num = 0 # 循环校验,不满足条件就重跑保存逻辑 while not check_all_files_valid(): retry_num += 1 if retry_num > MAX_RETRY_COUNT: raise RuntimeError(f"已重试{MAX_RETRY_COUNT}次仍有文件未生成,请检查文件保存逻辑是否存在异常") print(f"第{retry_num}次重新执行文件保存流程...") run_file_save_logic() # 走到此处说明所有文件校验通过,直接写后续业务代码即可 print("所有文件校验通过,开始执行后续业务逻辑") # 后续业务代码写在这里
简化写法(适配临时小脚本场景)
如果是写短平快的临时脚本,不需要封装函数,可以直接用内置函数all()简化逻辑:
import os # 直接把所有目标文件的完整路径放进列表 required_file_paths = [ "XYZ路径/fileA", "ZXC路径/fileB", "XBN路径/fileC", "对应规则路径/fileD", "对应规则路径/fileE" ] # 只要有任意一个文件不存在,就循环重跑保存逻辑 while not all(os.path.isfile(path) for path in required_file_paths): print("检测到目标文件缺失,重新执行保存流程") # 直接把你的文件保存代码写在这里即可 # 校验通过后执行后续代码 print("校验通过,执行后续业务")
注意事项
- 路径建议填写绝对路径,避免因为Python运行时的工作目录变化导致校验误判
- 如果使用Python 3.4及以上版本,也可以用标准库
pathlib替换os.path做判断,逻辑为Path(文件路径).is_file(),效果完全一致 - 如果确定不需要死循环防护,可以删掉最大重试次数的相关判断,但非常不建议在生产环境这么做,容易出现程序无响应卡死的问题
内容的提问来源于stack exchange,提问作者vidathri
相关产品推荐
相关产品推荐

