批量將.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:\Users\oy\Desktop\test'         #只要滿足形式,一般只需改變文件夾的路徑即可
    (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


免責聲明!

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



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