.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')