最近公司在做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 沒了