检测文件格式为csv,xlsx等文件的编码方式并读取文件

本文介绍了一种方法,利用Python的chardet库检测csv和xlsx文件的编码,针对编码不统一的问题,通过遍历文件夹并读取,解决一次性读取不同编码文件的需求。提示注意编码检测的局限性及可能的编码转换问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在需要读取众多文件格式为csv、xlsx等文件,且编码方式不统一的情况时,如何一次性读取呢?

1. 思路

面对这种情况,需要借助编码检测工具,先进行编码检测然后再根据编码检测的结果读取文件。

2. 代码实现

import os
import pandas as pd
import chardet

# 列出目标文件夹中的文件
file_list = os.listdir("../filelist")
None_file = []
for file in file_list:
	file_format = file.split('.')[-1]
	file_abs = f"../filelist/{file}"
	
	# 检测文件编码方式
	with open(file_abs, 'rb') as file:
        result = chardet.detect(file.read())
    encode_name = result['encoding']
    print(f'{file}---->{encode_name}')
    if encode_name!=None:
	    if file_fomat=='csv':
	    	temp_data = pd.read_csv(file_abs)
	    elif file_format=='xlsx':
	    	temp_data = pd.read_excel(file_abs)
	else:
		None_file.append(file)

print('检测编码方式为None的文件:',None_file)

3总结

通过以上代码可以检测每个文件的编码方式,注意chardet不是所有的文件编码都能检测出来,检测出来的也不一定完全正确,例如如果检测出是GB2312编码,可以替换为GBK编码(因为GBKGB2312的父集)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hj_caas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值