因为工作需要,在执行svn diff 时,代码diff有时候会有各种各样的编码,导致无法在fisheye里创建可视化链接,这里写了一个Python编码转换脚本,直接把diff文件连接当作参数传入即可完成转换。
# -*- coding: utf8 -*-
import sys
import os
import chardet
def parseArgs(sys_args=sys.argv):
'''
处理命令行参数传入
:return:
'''
__diff_file = (lambda x: len(x)!=1 and x[1] or 'help')(sys_args)
return __diff_file
def fun_controller(__diff_file):
#将所有的编码都转换成utf-8
file_old = open(__diff_file, 'r',encoding='utf-8')
file_new = open('tmp.diff','w')
for buff in file_old.readlines():
encode = chardet.detect(buff)
str_encode = encode['encoding']
buff = buff.decode(str_encode).encode("utf-8")
file_new.write(buff)
file_old.close()
file_new.close()
#将转换后的文件再写回原文件
cat_cmd = u'cat tmp.diff > %s ' % __diff_file
os.system(cat_cmd)
rm_cmd = u'rm -rf tmp.diff'
os.system(rm_cmd)
def main():
#1. 分析获取参数
__diff_file = parseArgs()
fun_controller(__diff_file)
if __name__ == '__main__':
main()