# -*- coding: utf-8 -*- import io path = r'C:\Users\jcxiong\Documents\Codex\MyProject\trafficAudit\traffic-audit-server\src\main\java\com\trafficaudit\reportexport\service\ReportExportService.java' with io.open(path, encoding='utf-8') as f: content = f.read() has_crlf = '\r\n' in content lines = content.split('\n') def patch_func(func, rowidx_from, rowidx_to, unit_from, unit_to): start = next(i for i, l in enumerate(lines) if l.strip().startswith('public byte[] ' + func + '(')) end = len(lines) for i in range(start+1, len(lines)): if lines[i].strip().startswith('public byte[] '): end = i break cnt_r = cnt_u = 0 for i in range(start, end): if lines[i].strip() == 'int rowIdx = ' + rowidx_from + ';': lines[i] = lines[i].replace('int rowIdx = ' + rowidx_from + ';', 'int rowIdx = ' + rowidx_to + ';') cnt_r += 1 if '"' + unit_from + '"' in lines[i]: lines[i] = lines[i].replace('"' + unit_from + '"', '"' + unit_to + '"') cnt_u += 1 print(func, '-> rowIdx:', cnt_r, '| unit:', cnt_u) patch_func('exportFreightRank', '3', '1', '万吨', '吨') patch_func('exportTurnoverRank', '3', '1', '万吨公里', '吨公里') new_content = '\n'.join(lines) if has_crlf: new_content = new_content.replace('\n', '\r\n') with io.open(path, 'w', encoding='utf-8', newline='') as f: f.write(new_content) print('saved')