【python】实现类似sublime正则表达式的批量文件修改功能

需求背景

因为通过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()

# %%

你可能感兴趣的:(文件操作,python3)