csv文件的概念
这应该是你第一次接触csv这种格式的文件吧。那么什么是csv文件呢?
csv是"Comma-Separated Values(逗号分割的值)"的首字母缩写,它其实和txt文件一样,都是纯文本文件。但csv文件可以显示为电子表格的样式,所以我们也可以把csv文件视为一种简化版的电子表格。
简化版是什么意思呢?回顾一下我们常见的Excel表格,不仅有“居中”排版,表格边框等样式,还有各种Excel公式等其他功能,这些功能在csv文件中是不存在的。
正如概念中强调的一样,csv文件是纯文本文件,它只能存储数据。
值得注意的是,csv文件有多种打开方式,如果你使用文本编译器(如记事本)打开它,它就会以文本形式显示;但如果你使用常用的office软件(Excel表格,WPS表格,Numbers表格)打开,csv就会直接显示为表格样式。
下面的图片中,就是对同一份csv文件的不同显示方式,希望你能注意到文本形式中的逗号,每一个逗号都将数据分隔开来,就像表格里的边框分开不同的数据一样。
如果只是记录数据,不对数据进行操作的话,相较于Excel表格,csv文件会更加简洁轻便。
使用Python来读写csv文件是非常容易的,因为实现csv的读取和写入功能的csv模块,是一个内置模块,我们可以直接使用。
当然,使用csv模块时,需要先导入它,即在代码一开始写入import csv。
打开csv文件
了解了什么是csv文件后,接下来就是要用Python来打开它。使用的函数你也很熟悉——open()。
是的,函数open()不仅可以打开txt文本文件,它也可以用来打开csv文件。使用open()打开的文件,都会返回一个文件对象。
与打开txt文本文件稍有不同的地方是,我们需要在open()中传入新的参数newline=''。根据Python官方文档的相关规定,当我们打开csv文件时,需要设置参数newline='',这样可以避免一些不必要的空行。
会产生空行的原因涉及了不同计算机系统的设计标准,这些问题比较深奥,你现在不必了解,只要记得Python官方推荐这么写就可以了。
CSV模块的使用
写入CSV文件
通过创建writer对象,主要用到2个方法。
writerow 写入一行
writerows 写入多行
使用DictWriter可以利用字典的方式把数据写入进去
读取CSV文件
通过reader()读取到的每一条数据是一个列表。可以通过下标方式获取具体某个值
通过DictReader()读取到的每一条数据是一个字典。可以通过按照字典的方式根据Key(列名)获取数据
csv读写操作(一)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/28
# @Author : 记夕忆沧澜
# @File : python读写csv(1).py
# @Software: PyCharm
# @Desc:csv读写操作(一)
import csv
fieldnames = ['id', 'name', 'age', 'height']
rows = [
['1', '小明', '20', '172'],
['2', '小强', '40', '175'],
['3', '卡西', '26', '165'],
['4', '酱酱', '30', '169'],
['5', '卡普', '32', '180'],
]
with open('test.csv', 'w', encoding='utf-8', newline='') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(fieldnames)
csv_writer.writerows(rows)
with open('test.csv', 'r', encoding='utf-8') as f:
csv_reader = csv.reader(f)
for row in csv_reader:
print(row)
csv读写操作(二)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/12/28
# @Author : 记夕忆沧澜
# @File : python读写csv(2).py
# @Software: PyCharm
# @Desc:csv读写操作(二)
import csv
fieldnames = ['id', 'name', 'age', 'height']
rowdicts = [
{'id': 1, 'name': '小明', 'age': 20, 'height': 172},
{'id': 2, 'name': '小强', 'age': 40, 'height': 175},
{'id': 3, 'name': '卡西', 'age': 26, 'height': 165},
{'id': 4, 'name': '酱酱', 'age': 30, 'height': 169},
{'id': 5, 'name': '卡普', 'age': 32, 'height': 180}
]
with open('test.csv', 'w', encoding='utf-8', newline='') as f:
csv_writer = csv.DictWriter(f, fieldnames)
csv_writer.writeheader()
csv_writer.writerows(rowdicts)
with open('test.csv', 'r', encoding='utf-8') as f:
csv_reader = csv.DictReader(f)
for row in csv_reader:
print(row)