python内置csv模块读写csv文件

本文详细介绍了如何使用Python内置的csv模块进行数据的读写操作,包括writerow()和writerows()方法写入数据,以及reader()方法读取数据。重点讲解了处理多行数据时的空行问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSV文件,是一种常用的文本格式,因为其格式简单、兼容性好,被广泛使用,特别是用于程序之间转换数据。
python也内置了csv模块,用来读写csv文件。

一、csv模块写入数据
语法:writer(csvfile, dialect=‘excel’,**fmtparams)
csvfile:文件对象
dialect:编码风格,默认为是excel,也就是用逗号(,)分隔,一般不去更改它。
**fmtparams:dialect格式参数,有delimter(分隔符,默认为逗号)
实例1:最简单的不加任何参数,直接写入一行数据–writerrow()

import csv
# 要写入的数据
data = ['wdewd', '2343243', 'python内置csv模块学习']
with open('test.csv', 'w') as f:
    mywrite = csv.writer(f)  # 返回一个writer对象
    mywrite.writerow(data)  # 一行一行的写入数据

结果如下:
在这里插入图片描述注:open()函数打开当前路径下的文件名为test.csv的文件,如果当前路径下没有名为test.csv的文件,则会创建它。

实例2:一次写入多行数据—writerows()

import csv

# 创建一个二维列表,作为要写入的数据
data_list = []
for i in range(3):
    data = [i, 'wdewd', '2343243', 'python内置csv模块学习']
    data_list.append(data)
with open('test.csv', 'w') as f:
    mywrite = csv.writer(f)  # 返回一个writer对象
    mywrite.writerows(data_list)  # 一次写入多行数据

结果如下:
在这里插入图片描述
常见问题:在写入多行数据时,出现每一条数据都有一个空行
解决办法:在open()函数打开文件时,加一个newline=’’参数即可。
更改后代码:

import csv

# 创建一个二维列表,作为要写入的数据
data_list = []
for i in range(3):
    data = [i, 'wdewd', '2343243', 'python内置csv模块学习']
    data_list.append(data)
with open('test.csv', 'w', newline='') as f:
    mywrite = csv.writer(f)  # 返回一个writer对象
    mywrite.writerows(data_list)  # 一次写入多行数据

结果如下:
在这里插入图片描述
二、csv模块读取数据
语法:reader(csvfile, dialect=‘excel’, **fmtparams),参数含义同上。
实例1:读取刚刚写入的csv文件

import csv

with open('test.csv', 'r') as f:
    res = csv.reader(f)
    print('返回一个对象:', res)
    print('转换为列表格式:', list(res))

结果如下:
在这里插入图片描述
常见使用问题:

with open('test.csv', 'rb') as f:
    res = csv.reader(f)
    print('返回一个对象:', res)
    print('转换为列表格式:', list(res))

在这里插入图片描述
**错误原因:**使用了“b”二进制文件打开模式,csv文件是文本文件,不是二进制文件。
**解决办法:**使用“r”(默认是t)或者“rt”文件打开模式

常见文件打开模式:

打开模式描述
r以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
w以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建。
a以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建。
r+在r的基础上增加了可写功能
w+在w的基础上增加了可读功能
a+在a的基础上增加了可读功能
b读写二进制文件(默认是t,表示文本),需要与上面几种模式搭配使用,如ab,wb, ab, ab+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一位代码

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值