需求背景
因为通过sublime批量替换10多个G的xml文件遇到困难,sublime批量修改的时候,会打开指定文件,导致内存空间爆炸,哪怕内存容量够,每5G的修改,会在开始替换的时候再次内存爆炸。
因此,本文计划以python的方式,实现sublime中的正则表达式查找替换指定内容的功能。
环境
python3 + vscode
参考文章
https://blog.csdn.net/sinat_36811967/article/details/86570911
正文
#%%
import os
import glob
import re
#%%
os.chdir(r'H:\文件夹') #切换工作空间到指定路径
xmls = glob.glob('*.xml')#获取当前工作空间下的所有以.xml结尾的文件目录
#设立两个正则表达式规则
rule_1 = r' (\w+):(\w+):00.0'#查找目标
relu_2 = r'T\1:\2:00'#替换被查找到的目标
#循环文件名
for one_xml in xmls:
print(one_xml)#输出当前处理的文件名称
#打开该文件
f = open(one_xml, 'r+', encoding='utf-8')
all_the_lines = f.readlines()#逐行获取文件内容
#将光标移动到文件开头,用于从头开始写入
f.seek(0)
#没搞懂truncate()的意思
f.truncate()
#循环每行,进行判断和从新输入
for line in all_the_lines:
line = re.sub(rule_1,relu_2,line)#在本行正则查找和替换
f.write(line)#写出
#关闭文件
f.close()
# %%