主要内容:

  • 小目标:了解csv文件格式,掌握csv模块
  • 主要内容:

什么是csv文件;

csv模块相关操作;

如果看完这篇文章,你还是弄不明白csv文件操作;

你来找我,我保证不打你,我给你发100的大红包。

1. csv文件

  • ini文件:使用纯文本来存储表格数据,并以指定的分隔符进行分隔;
  • csv文件作用:数据文件,例如:各大数据平台的数据集
  • csv文件每一行都是一条记录,每行字段都相同
col1,col2,col3v1,v2,v3......

2. csv文件基本操作:

  • csv文件操作需要使用csv模块

一个例子:

#导入csv模块import csvfpath = r'test.csv'f = open(fpath)#创建csv reader对象csvf = csv.reader(f)#通过for遍历csv文件for row in csvf:    print(row)f.close()

3.csv文件写入

3.1 csv.writer写入文件

写入步骤:

  • 创建对象:csvw = csv. writer(iterable [, dialect='excel'],…) #iterable一般为有写权限的文件对象
  • 写入一行:csvw.writerow(row) #row为列表或者可迭代对象
  • 写入多行:csv.writerow(rows) # rows例如:[[],[],[]...]

一个案例

#导入模块import csvfpath = r'C:甥敳獲hygDesktopest1.csv'f = open(fpath, 'w')#创建csv对象csvw = csv.writer(f)#写入一行数据csvw.writerow([1,2,3])#写入多行数据csvw.writerows([[3,4,5],[7,8,9]])#关闭文件f.close()

结果:

1,2,33,4,57,8,9

3.2 csv相关参数设置

csv读写可以指定下面参数:




android csv文件将数据追加到文件末尾 csv文件写入_c++ 读取文件

常用参数



  • 问题:上一个练习,写入文件多一行,如何处理?
  • 默认的换行为'',所以会多一行;指定lineterminator为'';
#导入模块import csvfpath = r'C:甥敳獲hygDesktopest1.csv'f = open(fpath, 'w')#创建csv对象,分隔符指定为|,换行符指定为csvw = csv.writer(f,delimiter='|',lineterminator='')#写入一行数据csvw.writerow([1,2,3])#写入多行数据csvw.writerows([[3,4,5],[7,8,9]])#关闭文件f.close()

结果:

1|2|33|4|57|8|9

很多同学纠结quotechar与quoting使用,我们做一个例子:

  • 每个字段使用进行处理,
  • 指定:quoting=csv.QUOTE_ALL, quotechar=''
#导入模块import csvfpath = r'C:甥敳獲hygDesktopest1.csv'f = open(fpath, 'w')#创建csv对象,分隔符指定为|,换行符指定为csvw = csv.writer(f,delimiter='|',lineterminator='',quoting=csv.QUOTE_ALL, quotechar='')#写入一行数据csvw.writerow(['1','|',3])#写入多行数据csvw.writerows([[3,4,5],[7,8,9]])#关闭文件f.close()

结果:

1|||33|4|57|8|9

3.3 以字典方式写入csv

csv文件第一行一般为字段名称;

csv.DictWriter可以以字典方式进行写入;

主要方法:




android csv文件将数据追加到文件末尾 csv文件写入_c++ 读取文件_02

DictWrite



一个例子:

#导入模块import csvfpath = r'C:甥敳獲hygDesktopest1.csv'f = open(fpath, 'w')#csv字段fieldnames = ['name','score']#写入数据data = [{'name':'li','score':80},{'name':'zhao','score':90}]#创建csvw对象csvw = csv.DictWriter(f,fieldnames=fieldnames,lineterminator='')#写入字段csvw.writeheader()#写入数据csvw.writerows(data)#关闭文件f.close()

结果:

name,scoreli,80zhao,90

以上就是csv写入主要操作

4 csv文件读取

csv读取两个方式:

  • 直接读取行:csv. DictReader (iterable [, dialect='excel'],…)
  • 字典方式读取:csv. DictReader (iterable [, dialect='excel'],…)
  • 字段方式读取,将第一行认为字段
  • csv文件读取方式:for或者next函数

具体操作:

#导入模块import csvfpath = r'C:甥敳獲hygDesktopest1.csv'f = open(fpath, 'r')#创建csv读对象,可以指定分隔符等参数csvr = csv.DictReader(f)#使用next函数读取一行,格式为字典print(next(csvr))#使用for循环读取剩余文件内容for row in csvr:    print(row)f.close()

结果:

OrderedDict([('name', 'li'), ('score', '80')])OrderedDict([('name', 'zhao'), ('score', '90')])

总结:

  • csv写入方式:字典或者逐行写入
  • csv第一行一般为字段
  • csv读取使用for遍历
  • csv文件读写需要特殊设置,例如:换行符,分隔符,写入与读取要设置一致。