CSV文件存储模块的常用功能

it2024-07-22  36

CSV文件存储模块的常用功能

前言:

CSV(Comma-Separated Values)逗号分隔值文件格式 ,其文件以纯文本形式存储表格数据(数字和文本)。

          csv文件格式是一种通用的电子表格和数据库导入导出格式。

写入:

1、csv.writer()对象:

      csv.writer(csvfile,dialect='excel',**fmtparams),主要用于把列表数据写入到csv文件。

 其中参数csvfile是任何支持write()方法的对象,通常为文件对象;dialect 和fmtparams与csv.reader对象构造函数中的参数意义相同。

  csv.writer对象包含以下属性和方法:

writer.writerow(row)          #方法,写入一行数据writer.writerows                     #方法,写入多行数据writer.dialect                     #只读属性,返回其dialect

    示例1:  使用writer对象写入csv文件

import csv def writecsv(csvfilepath):#列表方式写入 rows=[(100006,'小江','男','1班','77','79','80'),(100007,'小美','女','4班','77','88','80')] with open(csvfilepath,'a+',newline='')as csvfile: writer = csv.writer(csvfile,dialect='excel') writer.writerows(rows)#写入多行 print(writer.dialect) if __name__=='__main__': writecsv(r'E:\2018-12-19\scores.csv')

2、csv.DictWriter对象

        csv.DictWriter(csvfile,fieldnames,restval = '',extrasaction = 'raise',dialect = 'excel',*args,**kwds)

   extrasaction用于指定多余字段时的操作,其他参数同上。

  DictWriter对象的属性和方法:

       # 方法:  csvwriter.writerow(row)               # 将row写入writer的文件对象,根据当前方言进行格式化。支持迭代  csvwriter.writerows(rows)           # 将行中的所有元素写入编写器的文件对象,并根据当前方言进行格式化。支持迭代  DictWriter.writeheader()              # 写入标题字段名  # 属性:  csvwriter.dialect # 使用的方言只读描述

    示例2:  使用DictWriter对象写入csv文件

import csv def writecsv2(csvfilepath): headers = ['学号','姓名','性别','班级','语文','数学','英语'] rows = [{'学号':'100001','姓名':'小鱼','性别':'男','班级':'1班','语文':'72','数学':'82','英语':'85'}, {'学号':'100002','姓名':'小高','性别':'女','班级':'6班','语文': '74', '数学': '88', '英语': '85'} ] with open(csvfilepath,'a+',newline='') as f: f_csv = csv.DictWriter(f,headers) f_csv.writerows(rows) if __name__=='__main__': writecsv2(r'E:\2018-12-19\scores.csv')

读取:

1、csv.reader对象

       csv.reader(csvfile,dialect='excel',**fmtparams),主要用于文件的读取,返回一个reader对象用于在csv文件内容上进行行迭代。

     参数csvfile是文件对象或者list对象;dialect 用于指定csv的格式模式不同程序输出的csv格式有细微差别;fmtparams是一系列参数列表,主要用于设置特定的格式,以覆盖dialect中的格式。

      csv.reader对象是可迭代对象,包含以下属性:

csv.reader().dialect    #返回其dialectcsv.reader().line_num   #f返回读入的行数

        示例3:使用reader对象读取csv文件scores.csv,文件内容如下:

  学号,姓名,性别,班级,语文,数学,英语  100001,小雨,女,1班,72,85,87  100002,小雪,女,2班,67,87,77  100003,小宇,男,3班,88,78,78  100004,小天,男,1班,76,87,84  100005,小军,男,3班,79,86,83

import csv def readcsv(csvfilepath):#列表方式读取 with open(csvfilepath, 'r', newline='',encoding='utf-8') as csvfile: reader = csv.reader(csvfile)#创建csv.reader对象 for row in reader: # 读取出的内容是列表格式的 print(row) print(reader.line_num) if __name__=='__main__': readcsv(r'E:\2018-12-19\scores.csv') #输出 # ['学号', '姓名', '性别', '班级', '语文', '数学', '英语'] # ['100001', '小雨', '女', '1班', '72', '85', '87'] # ['100002', '小雪', '女', '2班', '67', '87', '77'] #....(略) # 6

2、csv.DictReader对象

      使用csv.reader对象从csv文件读取数据,结果为列表对象row,需要通过索引row[i]访问。如果希望通过csv文件的首行标题字段名访问,则可以使用csv.DictReader对象读取。

 csv.DictReader(csvfile,fieldnames=None,restkey=None,restval=None,dialect='excel',*args,**kwds)

  其中,csvfile是文件对象或list对象;fieldnames用于指定字段名,如果没有指定,则第一行为字段名;restkey和restval用于指定字段名和数据个数不一致时所对应的字段名或数据值,其他参数同reader对象。

  DictReader对象属性和方法: 

  # 方法:  csv.DictReader().__next__()# 称之为next(reader)  # 属性:  csvreader.dialect          # 解析器使用的方言的只读描述。  csvreader.line_num      #返回读入的行数  csvreader.fieldnames   #返回标题字段名

  示例4 :使用DictReader对象读取csv文件

import csv def readcsv2(csvfilepath): with open(csvfilepath,newline='') as f: f_csv = csv.DictReader(f) for row in f_csv: print(row['姓名'],row['班级']) # print('fieldnames:',f_csv.fieldnames) # print('dialect:',f_csv.dialect) # print('line_num:',f_csv.line_num) if __name__=='__main__': readcsv2(r'E:\2018-12-19\scores.csv')

转载自:https://www.cnblogs.com/wuxunyan/p/10442444.html


最新回复(0)