以下是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
参考: