加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

分割csv文件

发布时间:2020-05-25 01:34:19 所属栏目:Python 来源:互联网
导读:分割csv文件

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

# coding:utf-8
# python 2.7
import csv
import math
import sys
import os
from 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 data
def 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:],filepath)
            

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读