import os import sys import string #以指定模式打开指定文件,获取文件句柄 def getFileIns(filePath,model): print(\"打开文件\") print(filePath) print(model) return open(filePath,model) #获取需要处理的文件 def getProcFile(path): return os.listdir(path) #判断是否满足某个条件,如果满足则执行 def isTrue(outFileIns,s): findStr1 = \"LINE_COUNT_UPDATE INTEGER := 0;\" writeStr1 = \"LINE_COUNT_ERROR INTEGER := 0; --错误数据XX条\" findStr2 = \"DBMS_OUTPUT.PUT_LINE(\'处理完毕\" writeStr2 = \"DBMS_OUTPUT.PUT_LINE(\'错误数据[\'||LINE_COUNT_ERROR||\']条.\');\" findStr3 = \"DBMS_OUTPUT.PUT_LINE(\'插入数据[\'||CUR_RESULT.INT_ID||\']时发生异常...\');\" writeStr3 = \"LINE_COUNT_ERROR := LINE_COUNT_ERROR+1;\" findStr4 = \"DBMS_OUTPUT.PUT_LINE(\'更新数据[\'||CUR_RESULT.INT_ID||\']时发生异常...\');\" if s.find(findStr1) != -1: outFileIns.write(s) outFileIns.write(writeStr1+\"\\n\") elif s.find(findStr2) != -1: outFileIns.write(s) outFileIns.write(writeStr2+\"\\n\") elif s.find(findStr3) != -1: outFileIns.write(s) outFileIns.write(\"\\t\\t\\t\\t\"+writeStr3+\"\\n\") elif s.find(findStr4) != -1: outFileIns.write(s) outFileIns.write(\"\\t\\t\\t\\t\\t\"+writeStr3+\"\\n\") elif s.find(\"CS_OSLGIS\") != -1: outFileIns.write(s.replace(\"CS_OSLGIS\",\"CQ_RMW\")) elif s.find(\"AND A.LONGITUDE >\") != -1: outFileIns.write(\"\\t\\t\\tAND A.LONGITUDE IS NOT NULL\\n\\t\\t\\tAND A.LONGITUDE IS NOT NULL\\n\\t\\t\\tAND ROWNUM<2\\n\") elif s.find(\") LOOP\") != -1: outFileIns.write(\"\\t\\t) LOOP\\n\") else: outFileIns.write(s.replace(\"||\')\',2\",\"||\')\',3\")) #读取并处理文本 def getAndProc(inFileIns,outFileIns): lines = inFileIns.readlines() for s in lines: #print(s) isTrue(outFileIns,s) if __name__==\"__main__\": inFileMod = \"r\" outFileMod = \"w\" path = \"D:\\\\rmsdata2gis\" for tmpFile in os.listdir(path): inFilePath = path+\"\\\\\"+tmpFile outFilePath = path+\"\\\\BAK_\"+tmpFile inFileIns = getFileIns(inFilePath,inFileMod) outFileIns = getFileIns(outFilePath,outFileMod) getAndProc(inFileIns,outFileIns) inFileIns.close() outFileIns.close()