批量轉換.txt檔案的編碼格式為utf-8
阿新 • • 發佈:2020-08-02
.txt檔案原本的編碼格式為國標或者ANSI,需要轉換為utf-8,防止中文亂碼。
- 只要修改path路徑為.txt檔案所在目錄即可。
- 如果出現No module named 'chardet'錯誤,先執行
pip install chardet
安裝這個庫。 - 注意:如果.txt檔案本身已經是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')