分割csv文件,分割csv,# coding:utf


# coding:utf-8# python 2.7import csvimport mathimport sysimport osfrom sys import exit#平均分割CVS文件   def deal_csv(head,data,n,filepath):    name = filepath.split('.')[0]    line_number = 1000000    if int(math.ceil(len(data)/float(n)))<=line_number:        line_number = int(math.ceil(len(data)/float(n)))    else:        n = int(math.ceil(len(data)/float(line_number)))    temp = []    for i in range(len(data)-1,-1,-1):        temp.append(data[i])        if i==(n-1)*line_number:            reader = csv.writer(open("%s_%d.csv"%(name,n),'wb'))            reader.writerow(head)            for line in temp:                reader.writerow(line)            n-=1            temp=[]    print 'SourceFile -> %s'%(name)    print 'FilePath -> %s'%(os.getcwd())    print 'Status -> Success'#读取文件内容并按行转化成数组def read_csv(filepath,sign):    reader = csv.reader(file(filepath,'rb'))    data = []    if sign==',':        for line in reader:            data.append(line)    else:        for line in reader:            data.append(line[0].split(sign))    return datadef read_file(filepath,sign):    file = open(filepath)    try:        data = []        reader = file.readlines()        for line in reader:            data.append(line.strip('\n').split(sign))        return data    finally:         file.close()if __name__=="__main__":     data = []    filepath=''    sign=''    if len(sys.argv)==3:        sign=','    elif len(sys.argv)==4:        sign=sys.argv[3]    else:        sys.exit()    #获取文件名    filepath=sys.argv[1]    #获取数据    data = read_file(filepath,sign)    #获取分割数    n=int(sys.argv[2])    deal_csv(data[0],data[1:],n,filepath)

评论关闭