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

Python查找目录匹配模式文件、未找到时发邮件的问题咨询

问题根源
  • os.path.isfile() 本身不支持 * 通配符匹配逻辑,你直接拼接得到的路径是 /dev/stage/test*,系统中不存在名称带*的对应文件,所以判断始终返回False
  • 现有代码缺少json模块导入,后续调用json.load会直接报错
  • 直接拼接路径的写法兼容性差,不同操作系统的路径分隔符规则不同,容易出现路径错误
正确实现方案

使用Python标准库的glob模块实现通配符匹配,这是专门用于文件路径模式匹配的工具,原生支持*、?等通配符语法。

import os
import json
import glob

path = '/dev/stage/'
file_pattern = 'test*'
# 拼接匹配规则,优先用os.path.join避免路径分隔符错误
match_rule = os.path.join(path, file_pattern)
# 查找所有符合规则的文件,返回匹配到的路径列表
matched_files = glob.glob(match_rule)

# 过滤出真实存在的普通文件(避免匹配到目录)
valid_files = [f for f in matched_files if os.path.isfile(f)]

if valid_files:
    # 取第一个匹配到的文件,如需处理多个可遍历valid_files
    target_file = valid_files[0]
    # 建议指定编码避免乱码,增加异常捕获处理非法JSON的情况
    try:
        with open(target_file, encoding='utf-8') as f:
            data = json.load(f)
    except json.JSONDecodeError:
        # 可自定义JSON格式错误的处理逻辑,比如发告警邮件
        pass
else:
    # 确保mailserver、msg已提前正确初始化
    mailserver.sendmail('abc@gmail.com','def@gmail.com',msg.as_string())
额外注意事项
  • 如果同一目录下可能存在多个符合规则的文件,可根据修改时间、文件名规则进一步筛选需要的目标文件
  • 建议补充文件读取、JSON解析的异常捕获逻辑,避免文件权限不足、JSON格式非法等异常导致程序直接崩溃
  • 邮件发送部分需要提前完成SMTP服务连接、邮件内容组装的初始化,否则执行到sendmail步骤会报错
  • 如果需要递归匹配子目录下的符合规则文件,可以使用glob.glob(match_rule, recursive=True),同时匹配规则需要对应添加**标识子目录层级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:24:00