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其文件以纯文本形式存储表格数据。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)