[Python] Implementar una función de modificación de archivos por lotes similar a una expresión regular sublime

Antecedentes de la demanda

Debido a que es difícil reemplazar más de 10G archivos xml en lotes a través de sublime, cuando se modifican lotes sublimes, se abrirá el archivo especificado, lo que hará que el espacio de memoria explote, incluso si la capacidad de memoria es suficiente, cada modificación 5G volverá a memoria cuando el reemplazo comienza la explosión.
Por lo tanto, este artículo planea implementar la búsqueda de expresiones regulares y reemplazar la función de contenido especificado en sublime en Python.

alrededores

python3 + vscode

Articulo de referencia

https://blog.csdn.net/sinat_36811967/article/details/86570911

texto

#%%
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()

# %%

Supongo que te gusta

Origin blog.csdn.net/u010472858/article/details/106372421
Recomendado
Clasificación