python 删除文件中重复的字段@dyling
原文件内容放在list中,新文件内容按行查找,如果没有出现在list中则写入第三个文件中。
import csv
filetxt1 = 'E:/gg/log/log1.txt'
filecsv1 = 'E:/gg/log/log1.csv'
filecsv2 = 'E:/gg/log/log2.csv'
filecsv3 = 'E:/gg/log/log3.csv'
class operFileCsv():
def __init__(self, filename=None):
self.filename = filename
def readCsvFile(self):
readCsvHandler = open(self.filename, 'r')
filelines = csv.reader(readCsvHandler, dialect='excel')
for fileline in filelines:
print(fileline)
readCsvHandler.close
def writeCsvFile(self, writeline):
writeCsvHandler = open(self.filename, 'a', newline='')
csvWrite = csv.writer(writeCsvHandler, dialect='excel', )
csvWrite.writerow(writeline)
writeCsvHandler.close()
class getLogBuffFromFile():
def __init__(self):
self.logBuff1 = []
def getLog1Buff(self, filename):
with open(filename) as filehandler:
while True:
logOneLine = filehandler.readline().strip()
if not logOneLine:
break
self.logBuff1.append(logOneLine)
# print('TRACE: The log1 has ', len(self.logBuff1), ' lines.')
return self.logBuff1
def getLog2Buff(self, logOneLine):
pass
class deleteIterantLog():
def __init__(self):
self.logBuff1List = None
self.logBuff2OneLine = None
def deleteProcedure(self, oldlog, newlog, createlog):
self.logBuff1List = getLogBuffFromFile().getLog1Buff(oldlog)
self.dealProcedure(newlog, createlog)
def dealProcedure(self, file1name, file2name):
with open(file1name, 'r') as readCsvHandler:
filelines = csv.reader(readCsvHandler, dialect='excel')
for fileline in filelines:
if fileline[1] not in self.logBuff1List:
operFileCsv(file2name).writeCsvFile(fileline)
if __name__ == '__main__':
deleteIterantLog().deleteProcedure(filetxt1, filecsv2, filecsv3)