我有三个csv文件,我想要批量读取它们,可是它们的字符编码都是UTF-8 BOM,而我只要UTF-8格式的,所以要检测一下文件格式再转变。
接着转化就OK
if result['encoding']=='UTF-8-SIG':
utf_8_bom_f = open(file_name, 'r', encoding='utf_8_sig')
utf_8_bom_f_data = utf_8_bom_f.read()
file_object = open(file_path + '\\' + file, 'w', encoding='utf-8')
file_object.write(utf_8_bom_f_data)
print(file_name + "已完成")
完整代码
# ANSI文件转UTF-8
import os
import chardet
# 文件所在目录
file_path = r"C:\Users\Desktop\测试"
files = os.listdir(file_path)
for file in files:
file_name = file_path + '\\' + file
f = open(file_name, mode='rb')
data = f.read()
# 检测文件内容
result = chardet.detect(data)
# print(result) #{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
# 转化代码utf_8_sig------------>utf-8
if result['encoding']=='UTF-8-SIG':
utf_8_bom_f = open(file_name, 'r', encoding='utf_8_sig')
utf_8_bom_f_data = utf_8_bom_f.read()
file_object = open(file_path + '\\' + file, 'w', encoding='utf-8')
file_object.write(utf_8_bom_f_data)
print(file_name + "已完成")