Python实现两列表模式匹配:检测目录指定Zip文件是否缺失
检查指定Zip文件模式的缺失情况
我来帮你搞定这个问题!核心思路就是逐一核对目标模式列表里的每个项,看实际找到的文件列表中有没有匹配对应模式的文件,最后把缺失的模式找出来给你发通知。
具体实现步骤
- 先遍历目标模式列表中的每一个模式
- 对每个模式,检查实际找到的文件列表里是否存在至少一个文件名以该模式结尾(和你原来用
endswith的逻辑保持一致) - 把所有找不到匹配文件的模式收集起来,最后根据结果判断是否发送通知
完整代码示例
import os # 目标需要检查的Zip模式 target_patterns = ['pattern1.zip', 'pattern2.zip', 'pattern3.zip'] found_files = [] some_path = "/path/to/your/user/directory" # 替换成你的实际用户目录路径 # 遍历目录收集符合条件的文件(保留你原来的遍历逻辑) for root, dirs, files in os.walk(some_path): for file in files: if file.endswith(tuple(target_patterns)): found_files.append(file) # 检查缺失的模式 missing_patterns = [] for pattern in target_patterns: # 高效检查是否存在匹配当前模式的文件 has_match = any(file.endswith(pattern) for file in found_files) if not has_match: missing_patterns.append(pattern) # 输出通知 if missing_patterns: print(f"警告:以下Zip文件模式未找到匹配文件:{', '.join(missing_patterns)}") else: print("所有指定的Zip文件模式均已找到匹配文件!")
代码细节说明
any(file.endswith(pattern) for file in found_files):用生成器表达式快速判断是否存在匹配文件,只要找到一个符合条件的就停止检查,效率更高- 把
target_patterns转成tuple传入endswith,比你原来写死多个值更灵活,以后要新增模式只需要修改target_patterns列表就行 - 如果你的匹配逻辑不是“文件名以模式结尾”,而是“文件名包含模式”,只需要把
file.endswith(pattern)改成pattern in file即可
内容的提问来源于stack exchange,提问作者sourabh vs
相关产品推荐
相关产品推荐

