python獲取路徑下所有SQL指令碼的表名
# -*- coding:UTF8 -*-
import re
import os, sys
#建立臨時檔案
tmpfile=open('F:/python/路徑下所有檔案中表名/tmpfile.txt','w')
# 開啟待分析指令碼路徑
path = "E:/XXX/"
dirs = os.listdir( path )
print('檔名','表名')
# 迴圈路徑下所有檔案
for file in dirs:
#將檔案內容輸出到一個字串
all_the_text =open(path+file,encoding='utf-8').read( )
#匹配“${SJCK_V_ACCESS}.”+匹配字母、數字、下劃線。等價於 [A-Za-z0-9_]
pattern = re.compile(r'\$\{SJCK_V_ACCESS\}\.\w*')
#字串中找到正則表示式所匹配的所有子串,並把它們作為一個迭代器返回
it = pattern.finditer(all_the_text)
for match in it:
#替換字串中的匹配項,把${SJCK_V_ACCESS}.替換成空
tablename = re.sub(r'\$\{SJCK_V_ACCESS\}\.', "", match.group())
#列印 檔名,表名
print(file,tablename)
#結果追加入臨時檔案
tmpfile.write(file+" "+tablename + '\n')
#關閉臨時檔案
tmpfile.close()
#檔案內容行去重
list01=[]
for i in open('F:/python/路徑下所有檔案中表名/tmpfile.txt'):
if i in list01:
continue
list01.append(i)
with open('F:/python/路徑下所有檔案中表名/resultfile.txt','w') as s:
s.writelines(list01)