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

在需要读取众多文件格式为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的父集)。

你可能感兴趣的:(python知识,python)