今天在批量读取数据表时初次遇到 "Windows-1254" 的编码方式, 导致pd.read_csv无法正常读取.查阅了很多资料总结出了这篇简单易理解的文件转码方式,分享给大家一起学习.
1.获取文件列表
import os
# 读取文件夹,获取文件列表
folder_path = r"S:\import"
file_list = os.listdir(folder_path)
file_list
2.遍历文件列表, 依次打开数据表获取编码信息, 将不是'utf-8'的文件转码为'utf-8'.
注意点:
(1) 只适用于csv文件转码, xlsx千万不要转utf-8, 文件会损毁!!!
(2)此步骤处理时间较长, 如果有更省时的处理方式欢迎留言.
(3)保险起见转码后的文件建议另存, 写入路径可自行修改.
for a in file_list:
import chardet# ①确定文件编码,读取数据进行编码检测
with open(folder_path+"\\"+a,'rb') as f:
result = chardet.detect(f.read())
encoding = result['encoding']
if encoding != 'utf-8':
# ②转码为utf-8# errors='ignore'谨慎使用,目前未发现对数据是否有影响,欢迎留言讨论
with open(folder_path+"\\"+a,'r', encoding=encoding,errors='ignore') as f:
text = f.read()
with open(folder_path+"\\"+"Trans"+a,'w', encoding='utf-8') as f:
f.write(text)
print("{} 编码方式已从 {} 改为 utf-8".format(a, encoding))