CSV 文件的操作
csv(Comma Separated Values)是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。与 Excel 文件不同,CSV 文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
Python 标准库的模块 csv 提供了读取和写入 csv 格式文件的对象。
我们在 excel 中建立一个简单的表格:
另存为"csv(逗号分隔)",我们打开查看这个 csv 文件内容:
姓名,年龄,工作,薪水
熊大,18,程序员,50000
熊二,19,测试工程师,20000
熊三,20,人工智能开发,50000
csv.reader 对象和 csv 文件读取
【例1】用 csv.reader 从 csv 文件读取数据
import csv
with open(r'f:\b.csv') as a:
a_csv = csv.reader(a) # 创建csv对象,它是一个包含所有数据的列表,每一行为一个元素
print(a_csv)
print(list(a_csv))
运行结果:
分析:
可以看到,a_csv是个csv文件对象;它的里面存储了几个字符串列表。
【例2】用 csv.reader 从 csv 文件读取数据
import csv
with open(r'f:\a.csv') as a:
a_csv = csv.reader(a) # 创建csv对象,它是一个包含所有数据的列表,每一行为一个元素
headers = next(a_csv) # 获得列表对象的标题行信息
print(headers)
for row in a_csv:
print(row)
运行结果:
【例.额外】用 csv.reader 从 csv 文件读取数据
import csv
with open(r'f:\b.csv') as a:
a_csv = csv.reader(a) # 创建csv对象,它是一个包含所有数据的列表,每一行为一个元素
print(a_csv)
print(list(a_csv))
for row in a_csv:
print(row)
运行结果:
分析:
最后两行代码没有什么效果的原因是:第一次print(list(a_csv))已经将指针移动到了文件末尾。
csv.writer 对象和 csv 文件写入
【例】用 csv.writer 写一个 csv 文件
import csv
headers = ['工号', '姓名', '年龄', '月薪']
rows = [('1001', '乔布斯', 40, '50000'), ('1002', '库克', 35, '30000')]
with open(r'f:\b.csv', 'w', newline='') as b: # 添加newline=''使每写一行不会自行增加一行空格
b_csv = csv.writer(b) # 创建csv对象
b_csv.writerow(headers) # 写入一行(标题)
b_csv.writerows(rows) # 写入多行(数据)
运行结果: