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

SQL文件表名检索出现重复结果的原因及解决方法

解决SQL文件中重复(路径+表名)输出的问题

你的代码会重复输出同一组(文件路径+表名),原因是同一个表在文件的多行中被匹配到,每次匹配都会触发一次输出。要解决这个问题,只需要记录已经输出过的组合,避免重复打印。

修改后的代码

import os
import fnmatch

table_list = ['TABLE1', 'TABLE2', 'TABLE3']  # 替换为实际表名,移除占位符blabla
root_dir = "mypath\\blabla"

# 用集合存储已经输出过的(文件路径,表名)组合,集合自动去重
seen = set()

for dirpath, dirnames, filenames in os.walk(root_dir):
    for filename in fnmatch.filter(filenames, '*.sql'):
        file_path = os.path.join(dirpath, filename)
        with open(file_path, 'r') as f:
            for line in f:
                for table in table_list:
                    if table.upper() in line.upper():  # 统一转大写,避免大小写匹配误差
                        combo = (file_path, table)
                        if combo not in seen:
                            seen.add(combo)
                            print(file_path)
                            print(table)

关键修改点

  • 新增seen集合:利用集合元素唯一性的特性,存储已经输出过的(文件路径,表名)组合
  • 匹配时先检查组合是否已存在:只有未出现过的组合才会输出并加入集合
  • 修正了原代码的缩进问题(root_dir行之前的多余缩进)
  • 给line也加上.upper(),确保大小写不敏感匹配更严谨

修改后示例输出

Path1
Table1
Path1
Table2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:45:40