前段时间有个同事在项目中遇到一个问题,需求中有一个是将 Excel 文件传入系统,但是上传过程中,发现文件太大,无法上传。因而需要将该大文件拆分成若干个小文件,在上传。
代码如下:
coding=utf-8
import os
import pandas as pd
import math
def file_split(filename, file_num, header=True):
根据是否有表头执行不同程序,默认是否表头的
if header:
# 获得每个文件需要有的行数
chunksize = 1000000 # 先初始化的chunksize是100W
data1 = pd.read_csv(open(filename), chunksize=chunksize, sep=',', encoding='utf-8')
num = 0
for chunk in data1:
num += len(chunk)
chunksize = round(num / file_num + 1)
# 需要存的file
head, tail = os.path.splitext(filename)
data2 = pd.read_csv(open(filename), chunksize=chunksize, sep=',', encoding='utf-8')
i = 0 # 定文件名
for chunk in data2:
chunk.to_csv('{0}_{1}{2}'.format(head, i,