10 # filename为文件路径,file_num为拆分后的文件行数
11 # 根据是否有表头执行不同程序,默认有表头的
12 def Data_split(filename,file_num,header=True):
13 if header:
14 # 设置每个文件需要有的行数,初始化为1000W
15 chunksize=10000
16 data1=pd.read_table(filename,chunksize=chunksize,sep=',',encoding='gbk')
17 # print(data1)
18 # num表示总行数
19 num=0
20 for chunk in data1:
21 num+=len(chunk)
22 # print(num)
23 # chunksize表示每个文件需要分配到的行数
24 chunksize=round(num/file_num+1)
25 # print(chunksize)
26 # 分离文件名与扩展名os.path.split(filename)
27 head,tail=os.path.split(filename)
28 data2=pd.read_table(filename,chunksize=chunksize,sep=',',encoding='gbk')
29 i=0
30 for chunk in data2:
31 chunk.to_csv('{0}_{1}{2}'.format(head,i,tail),header=None,index=False)
32 print('保存第{0}个数据'.format(i))
33 i+=1
34 else:
35 # 获得每个文件需要的行数
36 chunksize=10000
37 data1=pd.read_table(filename,chunksize=chunksize,header=None,sep=',')
38 num=0
39 for chunk in data1:
40 num+=len(chunk)
41 chunksize=round(num/file_num+1)
43 head,tail=os.path.split(filename)
44 data2=pd.read_table(filename,chunksize=chunksize,header=None,sep=',')
45 i=0
46 for chunk in data2:
47 chunk.to_csv('{0}_{1}{2}'.foemat(head,i,tail),header=None,index=False)
48 print('保存第{0}个数据'.format(i))
49 i+=1
51 filename='文件路径'
52 #num为拆分为的文件个数
53 Data_split(filename,num,header=True)