python操作svn,自動update,中文路徑問題


前提條件是電腦上已經安裝好tortoisesvn.且經過測試可以從SVN服務器上上傳或下載更新文件。

需要注意的是:svn更新到本地的路徑或者export到本地的路徑如果是中文,utf-8的編碼傳給svn是會報錯的,是亂碼識別不了。 Windows下中文的編碼格式是gbk .所以要把中文字符串編碼為gbk。

svnconfig.py文件

# -*- coding: utf-8 -*-

setting={
    'svn':r'D:\Program Files\TortoiseSVN\bin',#svn的程序所在路徑
    'url':'https://svn.xxxxx.com/svn/nsip/test',#svn地址
    'dist':u'D:\\VPN\\代碼\\數據倉庫存儲過程修改備份\\PKG_SRC',#目標地址
    'closeOption': ' /closeonend:1'
    #'interval':15 #更新時間
}

# /closeonend:0 不自動關閉對話框
# /closeonend:1 如果沒發生錯誤則自動關閉對話框
# /closeonend:2 如果沒發生錯誤和沖突則自動關閉對話框
# /closeonend:3如果沒有錯誤、沖突和合並,會自動關閉
# /closeonend:4如果沒有錯誤、沖突和合並,會自動關閉

svn_update.py

 1 # -*- coding: utf-8 -*-
 2 #SVN的目錄有中文
 3 #svn的命令傳英文路徑沒有問題,中文路徑由於編碼問題會出現亂碼
 4 #中文路徑是utf-8的編碼,傳給SVN會出現亂碼,識別不了
 5 #windows的中文編碼是gbk. svn的中文路徑需要轉化為gbk的編碼才能識別
 6 #cmd_gbk=cmd.encode("gbk")
 7 
 8 import time
 9 import os
10 import svnconfig
11 import sys
12 
13 reload(sys)
14 sys.setdefaultencoding('utf8')
15 
16 dist= svnconfig.setting['dist_test']
17 print(dist)
18 #cmd = 'TortoiseProc.exe /command:update /path '+ dist + ' /notempfile' + svnconfig.setting['closeOption']
19 cmd_utf8 = 'TortoiseProc.exe /command:update /path '+ dist
20 cmd_gbk=cmd_utf8.encode("gbk")   #必須得轉成gbk,否則是亂碼,不能正常執行
21 
22 print(cmd_utf8,type(cmd_utf8))
23 print(cmd_gbk,type(cmd_gbk))
24 #print(cmd)
25 result = os.system(cmd_gbk)
26 
27 if result == 0:
28     print('svn update success')
29 else:
30     print('svn update fail')

 

中文路徑直接使用utf-8,沒有編碼成gbk之前的報錯:

 

中文路徑轉化為gbk之后:

 


免責聲明!

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



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