需求背景
因爲通過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()
# %%