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
相关产品推荐
相关产品推荐

