分割csv文件,分割csv,# coding:utf
文章由Byrx.net分享于2019-03-23 05:03:38
分割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)
评论关闭