程序
1 #!/usr/bin/env python3 2 # -*- coding:utf-8 -*- 4 # @FileName :Test.py 5 # @Software PyCharm 6 7 import os 8 import pandas as pd 9 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) 42 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 50 51 filename='文件路徑' 52 #num為拆分為的文件個數 53 Data_split(filename,num,header=True)