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

Python使用fnmatch检查目录文件时如何抑制不匹配项的多余输出

问题成因

当前代码在遍历目标目录下所有文件的循环逻辑中,对「匹配成功」「匹配失败」两种场景都配置了打印动作,因此会输出目录下全部文件的状态,无法达到仅输出匹配成功文件的预期。
同时原代码中for循环行存在多余缩进,和上一行input_files = os.listdir(input_dir)的缩进层级不对齐,实际运行时会触发IndentationError语法报错。

修改方案

直接删除代码中处理匹配失败场景的else分支即可:

  • 保留匹配成功时的打印逻辑,命中名称规则的文件会正常输出存在提示
  • 匹配失败的文件不会触发任何输出动作,多余的无关打印会被完全抑制
    修改后的可正常运行代码参考:
import sys, os, re, fnmatch

input_dir = '/scripts/test/'
date = sys.argv[1]
midfix = '.NYSE'
data_inpt_patt = date + midfix + '*' 

input_files = os.listdir(input_dir)
for i in input_files:
    if fnmatch.fnmatch(i, data_inpt_patt):
        print(i + ' EXISTS')

运行python check_files.py 20210401时,输出将仅包含匹配规则的文件信息,和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 10:54:01