zoukankan      html  css  js  c++  java
  • 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  没了 

  • 相关阅读:
    [转]ABAP动态取得数据
    [转]ABAP学习笔记之三内表
    [转]ABAP实现对变式的修改
    [转]ABAP Search help
    C#中访问私有成员[转载]
    如果在BackgroundWorker运行过程中关闭窗体…
    交叉编译的概念
    索引器的重载的一个例子
    自定义类实现IComparable接口
    ioctl函数
  • 原文地址:https://www.cnblogs.com/dwtt/p/8360831.html
Copyright © 2011-2022 走看看