csv的读写操作
cvs简介:
CSV 全称 Comma-Separated Values,中文叫逗号分隔值或字符分隔值,它以纯文本形式存储表格数据(数字和文本),其本质就是一个字符序列,可以由任意数目的记录组成,记录之间以某种换行符分隔,每条记录由字段组成,通常所有记录具有完全相同的字段序列,字段间常用逗号或制表符进行分隔。CSV 文件格式简单、通用,在现实中有着广泛的应用,其中使用最多的是在程序之间转移表格数据。
1、READER:
csv.reader(csvfile, dialect='excel', **fmtparams):用于文件的读取, 返回一个reader 对象,
csvfile:文件对象或者list对象,如果 csvfile 是文件对象,则使用 newline=’’ 打开,:with open('eggs.csv', newline='') as csvfile
dialect :用于指定csv的格式模式不同程序输出的csv格式有细微差别;dialect 描述,只读,供 writer 使用
fmtparams:是一系列参数列表,主要用于设置特定的格式,以覆盖dialect中的格式。
Reader对象的公共属性:
csvreader.dialect #返回其dialect
csvreader.line_num #返回读入的行数
eg:用于读取文件:testtry.csv如下:


import csv
with open('testtry.csv',newline='')as test:
tsetreader = csv.reader(test) #创建csv.reader对象
for row in tsetreader:
#读取出的内容是列表格式的
print(row)
cvs.reader
2、csv.writer(csvfile, dialect='excel', **fmtparams):返回一个 writer 对象,该对象负责将用户的数据在给定的文件类对象上转换为带分隔符的字符串。
writer对象的方法:
csvwriter.writerow(row) #写入一行数据
csvwriter.writerows(rows) #写入多行数据
writer对象的属性:
csvwriter.dialect #属性,返回dialect

with open('testtry.csv', 'w', newline='') as csvfile: # csv文件原来存在的话,会覆盖点原来文件的内容
spamwriter = csv.writer(csvfile) #创建一个写对象
spamwriter.writerow(['李梅','18','96']) #写入一行
data = [( '张雨', '21','85'), ('李华', '20', '91')]
spamwriter.writerows(data) # 写入多行
cvs.writer
3、class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds):其中,csvfile是文件对象或list对象;fieldnames用于指定字段名,如果没有指定,则第一行为字段名;restkey和restval用于指定字段名和数据个数不一致时所对应的字段名或数据值,其他参数同reader对象。
# 属性:
csvreader.dialect # 解析器使用的方言的只读描述。
csvreader.line_num #返回读入的行数
csvreader.fieldnames #返回标题字段名

with open('testtry.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['name'], row['age'],row['score'])
print('fieldnames:',reader.fieldnames) # 读取标题字段,如果没有,则会读取文件的第一条记录
print('dialect:',reader.dialect) #解析器使用的方言的只读描述。
print('line_num:',reader.line_num) # 返回读入的行数
print(row) # 字典
csv.DictReader
4、class csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds) :extrasaction用于指定多余字段时的操作,其他参数同DictReader
fieldnames :一个字典keys的序列,用于标识writerow()方法传递字典中的值的顺序
restval :可选参数,用于字典在字段名中确实键时要写入的值
extrasaction :如果一个字典传递给writerow()方法在fieldnames中找不到键,extrasaction指示要采取的操作,
如果设置:'raise' (默认值), ValueError is raised【ValueError :当操作或函数接收到具有正确类型但不适当值的参数时引发,并且这种情况不会由更精确的异常(如IndexError)来描述】
如果设置:‘'ignore'’ ,忽略字典中的额外值

with open('names.csv', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader() # 写入标题字段名
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'}) #写入一行
rowdict =[{'first_name': 'Lovely', 'last_name': 'Spam'},{'first_name': 'Wonderful', 'last_name': 'Spam'}]
writer.writerows(rowdict) #写入多行
csv.DictWriter
csv的读写操作的更多相关文章
- 用CSV文件读写数据的两种方式(转)
导读:有时候我们需要对收集的数据做统计,并在页面提供显示以及下载.除了对传统的excel存取之外,对CSV文件的存取也很重要.本文列出了这两种操作的详细代码. 代码: <?php $file = ...
- Java 对不同类型的数据文件的读写操作整合器[JSON,XML,CSV]-[经过设计模式改造](2020年寒假小目标03)
日期:2020.01.16 博客期:125 星期四 我想说想要构造这样一个通用文件读写器确实不容易,嗯~以后会添加更多的文件类型,先来熟悉一下文件内容样式: <?xml version=&quo ...
- oracle读写文件--利用utl_file包对磁盘文件的读写操作
oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...
- Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...
- Python读写操作Excel模块_xlrd_xlwt_xlutils
Python 读写操作Excel -- 安装第三方库(xlrd.xlwt.xlutils.openpyxl) 如果仅仅是要以表单形式保存数据,可以借助 CSV 格式(一种以逗号分隔的表格数据格式)进行 ...
- Python中关于csv的简单操作
Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ...
- python3:csv的读写
前言快要毕业那会儿,在下编写了一个招聘网站招聘岗位的爬虫提供给前女神参考,最开始我是存到mysql中,然后在到处一份csv文件给前女神.到了参加工作后,由于经常使用excel绘制图表(谁叫公司做报表全 ...
- Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)
序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...
- [Python]-pandas模块-CSV文件读写
Pandas 即Python Data Analysis Library,是为了解决数据分析而创建的第三方工具,它不仅提供了丰富的数据模型,而且支持多种文件格式处理,包括CSV.HDF5.HTML 等 ...
随机推荐
- [LeetCode]42. Trapping Rain Water雨水填坑
这个题难点在于无法保证右边是不是有更高的墙可以保证挡住水 双指针可以解决 /* 两边指针保证,保证另外一边肯定有能挡住水的地方. 如果从一边开始,不考虑另一边,是无法保证右边肯定有挡水的墙,如果右边只 ...
- 收下这款 Vue 项目模版,它将让你的开发效率在 2021 年提高 50%
这是什么 vue-automation 是一款开箱即用的 Vue 项目模版,它基于 Vue CLI 4 众所周知,虽然 Vue CLI 提供了脚手架的功能,但由于官方的脚手架过于简单,运用在实际项目开 ...
- 线程上下文类加载器(Context ClassLoader)
1.线程上下文类加载器是从jdk1.2开始引入的,类Thread中的getContextClassLoader()与setContextClassLoader(ClassLoader c1),分别用来 ...
- idea多模块启动
2018版本的idea 原文链接http://zhhll.icu/2020/04/07/idea/idea%E4%B9%8B%E5%A4%9A%E6%A8%A1%E5%9D%97%E5%90%AF%E ...
- Hive Query生命周期 —— 钩子(Hook)函数篇
无论你通过哪种方式连接Hive(如Hive Cli.HiveServer2),一个HQL语句都要经过Driver的解析和执行,主要涉及HQL解析.编译.优化器处理.执行器执行四个方面. 以Hive目前 ...
- Java并发/多线程-CAS原理分析
目录 什么是CAS 并发安全问题 举一个典型的例子i++ 如何解决? 底层原理 CAS需要注意的问题 使用限制 ABA 问题 概念 解决方案 高竞争下的开销问题 什么是CAS CAS 即 compar ...
- 【Linux】rsh进程缓慢问题处理
环境CentOS 6.5 由于项目上线时间很长,服务器持续很久没有关机重启过,随后发现rsh反应特别慢 rsh登陆服务器的反应最慢时候3分钟才可以建立链接,登陆之后查看服务器负载是否正常,查看cpu, ...
- C语言中左值和右值的区别(C语言学习笔记)
重要的内容要重复强调: C语言的术语Ivalue指用于识别或定位一个存储位置的标识符.( 注意:左值同时还必须是可改变的) 其实rvalue的发明完全是为了搭配lvalue , rvalue你可以理解 ...
- VB基础总结
前段时间用VB写了一个简单窗口小应用,久了不碰VB,都忘了,下面用思维导图简单总结了一些基础的东西,方便以后快速查阅.
- 记录Js动态加载页面.append、html、appendChild、repend添加元素节点不生效以及解决办法
今天再优化blog页面的时候添加了个关注按钮和图片,但是页面上这个按钮和图片时有时无,本来是搞后端的,被这个前端的小问题搞得抓耳挠腮的! 网上各种查询解决方案,把我解决问题的艰辛历程分享出来,希望大家 ...