Python实现合并某路径下的所有csv文件,并保存为excel
工作中偶尔遇到,同样字段和格式的若干个csv文件,将其复制到同一个excel表的场景,以下是实现的代码:
import os
import chardet
import pandas as pd
class UnionFiles:
"""一个可以合并文件的类"""
@classmethod
def get_coding(cls, filename):
"""获取文件的编码格式"""
with open(filename, 'rb') as f:
enc = chardet.detect(f.read())
return enc['encoding']
@classmethod
def read_files(cls, path, header=True):
"""读取路径下面的所有文件"""
# 遍历所有文件
dirs = os.listdir(path)
dfs = []
for file in dirs:
filename = path + '/' + file
coding = cls.get_coding(filename)
df = pd.read_csv(filename, encoding=coding, header='infer' if header else None)
dfs.append(df)
df = pd.concat(dfs)
return df
@classmethod
def save_to_excel(cls, df, filename):
"""将DataFrame保存文件为excel"""
df.to_excel(filename, index=False)
print('已保存!')
return None
if __name__ == "__main__":
# 需要合并的文件所在文件夹
read_path = 'D:/Code'
# 保存文件路径和文件名
savefile = read_path + '/' + 'result.xlsx'
# 读取所有文件,保存为DataFrame
df = UnionFiles.read_files(read_path)
# 保存
UnionFiles.save_to_excel(df, savefile)