python—CSV的读写

python—CSV的读写,第1张

1.写入csv数据

import csv

header=['class','name','sex','height','year']

rows=[

[1,'xiaoming','male',168,23],

[1,'xiaohong','female',162,22],

[2,'xiaozhang','female',158,21],

[2,'xiaoli','male',158,21]

]

with open('csvdir.csv','w',newline='')as f:          #newline=" "是为了避免写入之后有空行

        ff=csv.writer(f)

        ff.writerow(header)

        ff.writerows(rows)

2.在写入字典序列类型数据的时候,需要传入两个参数,一个是文件对象——f,一个是字段名称——fieldnames,到时候要写入表头的时候,只需要调用writerheader方法,写入一行字典系列数据调用writerrow方法,并传入相应字典参数,写入多行调用writerows  

import csv

headers = ['class','name','sex','height','year']

rows = [

        {'class':1,'name':'xiaoming','sex':'male','height':168,'year':23},

        {'class':1,'name':'xiaohong','sex':'female','height':162,'year':22},

        {'class':2,'name':'xiaozhang','sex':'female','height':163,'year':21},

        {'class':2,'name':'xiaoli','sex':'male','height':158,'year':21},

    ]

with open('test2.csv','w',newline='')as f:

      f_csv = csv.DictWriter(f,headers)

      f_csv.writeheader()

      f_csv.writerows(rows)

注意:列表和字典形式的数据写入是不一样的!!!!!!

3.csv的读取,和读取文件差不多:

import csv 

with open('test.csv')as f:

    f_csv = csv.reader(f)

    for row in f_csv:

        print(row)

问题描述:需要将一个csv格式的表格文件转换成我想要的表格内容形式。(前四行的每个竖列转换成每行得横列,然后第五行得横列于前三行结合拼接成一行,类似这种得样式)

最开始写的时候用的是Microsoft.Office.Interop.Excel库,挨个单元格读excel然后再挨个单元格写入文件,谁用谁知道,刚开始没用多大的文件就几兆大概转换完的时间要个半小时,但是我们这边需要转的竟然大多都是上百兆得文件,转换后粗滤算下需要两千多万行,excel文件最多也就只能有一百多万行。

一次要转换几十个文件照这个速度要一周,得!重写。

由于之前也写过一个读千万行的csv文件,与之不同的是,只要读,不要文件处理,每读五百行转换成json传给客户,用的StreamReader,由于我的excel要做文件处理,StreamReader是按行读,效率快但是想直接 *** 作单元格数据还要自己处理,我就抱着试试心态重写了一份。利用StreamReader读,StreamWriter写。

核心就是按照行读,再把自己数据处理成一行,再按照行写。

遇到的问题就是内存溢出,由于数据量大,转换速度快,一开始打算每读一百万行保存成一个文件,但是电脑配置有限,该成八十万就ok了。可以根据自己电脑实际情况来。

改了之后再重新传,速度飞快。几千万行的绝对十分钟之内。

c井号csv文件的读写速度快。根据查询相关公开信息显示,c井号csv文件是只要读不要文件处理,几千万行仅需10分钟,相对于其他的转换格式快了几十倍,读写速度很快。csv是逗号分隔值文件格式,可以用电脑自带的记事本或excel打开,csv其文件以纯文本形式存储表格数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11518316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存