zoukankan      html  css  js  c++  java
  • 批量将.txt编码格式转化为utf8

      以下是Python3语言,一个文件里有很多个.txt文档,里面编码格式都是ASCII。现需要将这些编码格式转化为utf-8,以下是python3语言编写的脚本,一般只需改变path路径就可以运行。

    1、python_utf8.py

      GB2312/GBK => UTF-8

    import os
    import codecs
    import chardet
    
    def list_folders_files(path):
        """
        返回 "文件夹" 和 "文件" 名字
        :param path: "文件夹"和"文件"所在的路径
        :return:  (list_folders, list_files)
                :list_folders: 文件夹
                :list_files: 文件
        """
        list_folders = []
        list_files = []
        for file in os.listdir(path):
            file_path = os.path.join(path, file)
            if os.path.isdir(file_path):
                list_folders.append(file)
            else:
                list_files.append(file)
        return (list_folders, list_files)
    
    def convert(file, in_enc="GBK", out_enc="UTF-8"):
        """
        该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8
        :param file:    文件路径
        :param in_enc:  输入文件格式
        :param out_enc: 输出文件格式
        :return:
        """
        in_enc = in_enc.upper()
        out_enc = out_enc.upper()
        try:
            print("convert [ " + file.split('\')[-1] + " ].....From " + in_enc + " --> " + out_enc)
            f = codecs.open(file, 'r', in_enc, "ignore")
            new_content = f.read()
            codecs.open(file, 'w', out_enc).write(new_content)
        except IOError as err:
            print("I/O error: {0}".format(err))
    # 将路径下面的所有文件,从原来的格式变为UTF-8的格式
    if __name__ == "__main__":
    
        print('abc')
        path = r'C:UsersoyDesktop	est'         #只要满足形式,一般只需改变文件夹的路径即可
        (list_folders, list_files) = list_folders_files(path)
    
        print("Path: " + path)
        for fileName in list_files:
            filePath = path + '\' + fileName
            with open(filePath, "rb") as f:
                data = f.read()
                # codeType = chardet.detect(data)['encoding']
                convert(filePath, 'GB2312', 'UTF-8')

    2、测试

      新建一个 a.txt 文件,编码修改为 ANSI(本机就是 GB2312编码),然后写一些测试文本,保存

       python3 运行脚本(我本机 python 命令就是调用的 python3)

     

    3、ImportError: No module named 'chardet'

      解决:依次使用 pip 安装即可

    pip install certifi
    pip install chardet
    pip install idna
    pip install urllib3

    参考:

      1)批量将.txt编码格式转化为utf8

  • 相关阅读:
    【Hello CC.NET】巧用模板简化配置
    【Hello CC.NET】自动化发布时 Web.config 文件维护
    Hello Jexus
    【Hello CC.NET】CC.NET 实现自动化集成
    SSE和WebSocket的用法和比较
    利用canvas实现鼠标跟随效果
    使用es6制作简单数独游戏
    ppt学习(3)
    ppt学习(2)
    ppt学习(1)
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/13182719.html
Copyright © 2011-2022 走看看