【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()

# %%

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章