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

