python批量修改文件內容及文件編碼方式的處理


最近公司在做tfs遷移,后面要用新的ip地址去訪問tfs 拉取代碼  ,所以原來發布腳本中.bat類型的腳本中的的ip地址需要更換    

簡單說下我們發布腳本層級目錄 :每個服務站點下都會有一個發布腳本 .bat文件或.sh文件

所有站點保存在本地某個文件夾下   目錄結構如圖:

 

先發代碼  后面在詳說下過程中遇到的坑:

 

運行后結果

 

踩坑回顧:

剛開始我都是以utf-8編碼模式去讀寫,發現有的腳本會處理成功 然后就會報錯  報錯如下:

'utf8' codec can't decod

大概意思就是 utf-8編碼無法解析讀取的文件內容 

查閱了下資料  說是windows編碼方式是gbk ,ok  我把utf-8的編碼方式改成了gbk   覺得這次應該差不多了 走起運行 果不其然  正常的處理了幾個文件后  又報錯了:

'gbk' codec can't decod

@#¥%@#%@#%#@%

 還是編碼方式的問題

好吧  我惡補了下文件的編碼類型及編碼類型的獲取    知道了   chardet  模塊    寫了個方法識別文件的編碼方式

def  recognition(path):
file = open(path, "rb")
buf = file.read()
result = chardet.detect(buf)
return result['encoding']

 隨機找了幾個腳本文件去跑  發現有的.bat文件的編碼類型是utf-8  有的是GB2312  還有的是ISO-8859-9   也是夠奇葩的

找到問題所在了  當時想了兩個解決方案

1 統一文件編碼方式 然后再去處理

2 判斷文件的編碼方式  什么編碼方式  就用該編碼方式去處理

當時覺得方案1 比較極端  所以采用了方案2  

可以發現 方案2我對編碼方式為ISO-8859-9 的 直接pass掉了   。雖然也是.bat的文件    但是這種編碼方式的文件並不是我們的發布腳本   

 

ok  沒了 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM