import os
import glob
import datetime
class MainControl:
def __init__(self):
self.log = Log()
self.log.setLogFilename("log.log")
self.log.logPrintln("[START]" + datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'))
pass
def main(self):
rp = Replacer()
rp.setLog(self.log)
rp.addConvPair("AAA","BBB")
rp.addConvPair("CCC","DDD")
fl = FileList()
fl.setLog(self.log)
fl.setExt("*.BAS")
fl.getFileNameList()
for item in fl.fnamelist:
rp.setFile(item)
rp.main()
print("END")
self.log.logPrintln("[END]" + datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S'))
class Replacer:
def setLog(self,log):
self.log = log
def __init__(self):
self.convPair=[]
self.afterlist=[]
def addConvPair(self,before,affter):
self.convPair.append([before,affter])
def dumpConvPair(self):
for item in self.convPair:
print(item)
def setFile(self,FileName):
self.FileName = FileName
self.File = TextFile()
self.File.filename = self.FileName
def main(self):
self.afterlist=[]
self.changed = False
self.File.read()
for line in self.File.lines:
beforeLine=line
for r in self.convPair:
line = line.replace(r[0],r[1])
if line == beforeLine:
pass
else:
self.changed = True
self.log.logPrintln("FileName:" + self.File.filename )
self.log.logPrint("Before:" + beforeLine )
self.log.logPrint("After:" + line )
print(line)
print(beforeLine)
self.afterlist.append(line)
if self.changed ==True:
self.File.lines=self.afterlist
self.File.write()
pass
class FileList:
def setLog(self,log):
self.log = log
def pathJoin(self,path,filename):
return (os.path.join(path,filename))
def getCurFileList(self,path,filename):
return (glob.glob(self.pathJoin(os.path.dirname(path) + "/**/",filename), recursive=True))
def setExt(self,ext):
self.target_ext = ext
def __init__(self):
self.target_ext="*.*"
self.FileList=[]
def getFileNameList(self):
self.fnamelist = self.getCurFileList(os.getcwd() + "/",self.target_ext)
def dumpFileList(self):
for item in self.fnamelist:
print(item)
class TextFile:
def setLog(self,log):
self.log = log
def __init__(self):
self.filename = ""
self.lines = []
def clear(self):
self.lines = []
def count(self):
return (len(self.lines))
def items(self,n):
return (self.lines[n])
def add(self,d):
self.lines.append(d)
def csvRead(self,s,x):
v=[]
v = s.split(',')
return v[x]
def itemsXY(self,x,y):
return csvRead(self,self.lines[y],x)
def read(self):
self.clear()
return (self.readAppend())
def write(self):
if os.path.exists(self.filename) == False:
os.makedirs(os.path.dirname(self.filename),exist_ok = True)
f = open(self.filename,'w')
f.writelines(self.lines)
f.close()
def printlines(self):
for line in self.lines:
print(line)
def readAppend(self):
if os.path.exists(self.filename) == True:
f = open(self.filename,'r')
self.lines = f.readlines()
f.close()
return (True)
else:
return (False)
def writeAppend(self):
if os.path.exists(self.filename) == False:
os.makedirs(os.path.dirname(self.filename),exist_ok = True)
f = open(self.filename,'a')
f.writelines(self.lines)
f.close()
def writeAppend1Line(self,msg):
mode = "a"
if os.path.exists(self.filename) == False:
os.makedirs(os.path.dirname(self.filename),exist_ok = True)
mode = "w"
f = open(self.filename,mode)
f.write(msg)
f.close()
class Log:
def setLogFilename(self,filename):
self.logFilename = filename
def logPrint(self,s):
f = open(self.logFilename,'a')
f.write(s)
f.close()
def logPrintln(self,s):
self.logPrint(s + "\n")
if __name__ == "__main__":
mc = MainControl()
mc.main()