文章目录
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。
前言
在Python日常开发、数据处理、爬虫存储、简易办公自动化等场景里,表格文件的处理绝对是绕不开的刚需。提到表格,很多新手第一反应就是Excel,可真要上手处理简单的表格数据,才发现Excel文件格式臃肿、依赖第三方库、还容易出现格式兼容问题,折腾半天反而耽误效率。
其实Python早就自带了一款「极简表格处理神器」——csv模块,作为Python内置的标准库,它不需要额外安装任何依赖,兼容性拉满,2026年主流的Python3.10及以上版本都能无缝使用,专门用来处理csv格式的表格文件,完全能满足90%以上的简单表格读写需求。
很多新手觉得csv模块操作复杂,其实是没找对学习思路,它的核心逻辑就像我们日常手写表格一样简单:读就是照着表格念数据,写就是往表格里填内容。这篇文章我就用最通俗的大白话+接地气的段子,从零开始带大家吃透csv模块的基础读写操作,全程无晦涩术语、无复杂逻辑,零基础小白也能一步跟着上手,看完就能直接用到实际代码里。
一、先搞懂:csv到底是什么?别被文件后缀唬住
在正式学习csv模块之前,咱们先把csv文件的本质掰扯清楚,避免新手一上来就陷入「格式误区」。
很多人看到.csv后缀,就觉得它是Excel的专属格式,这完全是误解!csv的全称是Comma-Separated Values,翻译过来就是「逗号分隔值」,说白了就是纯文本格式的简易表格,和Excel那种带公式、带字体格式、带颜色排版的复杂表格完全不是一回事。
我给大家打个比方:如果把Excel比作装修精致、功能齐全的精装餐厅,那csv就是路边干净整洁、只卖家常菜的便民小吃店——没有花里胡哨的装饰,没有多余的功能,只有最核心的「数据内容」,用逗号把每一列数据分开,用换行代表每一行数据,结构简单到极致。
举个最直观的例子,一个学生成绩的csv文件,用记事本打开长这样:
姓名,语文,数学,英语
张三,92,88,95
李四,85,90,89
王五,78,82,91
用Excel打开就是规整的表格,本质上它就是一段纯文本,只是用固定的分隔符区分行列,这也是csv文件最大的优势:
- 跨平台兼容:Windows、Mac、Linux系统都能直接打开,不存在格式兼容问题;
- 轻量无负担:同样的数据量,csv文件体积只有Excel的十分之一甚至更小,打开、读写速度极快;
- 无依赖易处理:Python原生模块就能操作,不用安装第三方库,避免依赖冲突、版本不兼容的问题。
2026年的开发场景中,小批量数据存储、爬虫数据导出、简易数据交换、办公简单表格统计,首选都是csv格式,根本没必要动用pandas、openpyxl这类重型库,就像你出门买瓶矿泉水,没必要开大型货车,骑个电动车(csv模块)就足够了。
二、前置准备:csv模块零安装,导入即用
作为Python内置的标准库,csv模块最大的亮点就是无需额外安装,不管你是Windows、Mac还是Linux系统,只要安装了Python环境,就能直接导入使用,完全不用执行pip install命令,彻底告别新手最头疼的「依赖安装报错」问题。
导入csv模块的代码只有一行,简单到离谱:
# 导入csv模块,全程只需这一行
import csv
这里给新手提个醒:2026年市面上已经几乎没人用Python2了,csv模块在Python3中做了优化,语法和使用逻辑更简单,本文所有代码都是基于Python3.10+版本编写,大家直接复制运行即可,不用考虑版本兼容问题。
很多新手会问:「我要不要装别的库辅助?」完全不用!csv模块本身就封装了完整的读写、格式处理功能,咱们处理基础表格,吃透原生csv模块就够了,别还没学会走路就想着跑,先把基础打牢比什么都重要。
三、csv文件读取:3种常用方式,小白全拿捏
读取csv文件是日常使用最多的操作,比如读取本地的成绩表、数据表、爬虫导出的数据等,csv模块提供了两种核心读取方式,再加上进阶的批量读取,刚好覆盖新手所有使用场景,下面逐一拆解,每一种都配代码+白话解释。
3.1 基础逐行读取:reader()函数,入门首选
csv.reader()是csv模块最基础的读取方法,适合没有复杂格式、纯数据的csv文件,它会把csv文件的每一行数据转换成一个列表,我们通过遍历就能拿到每一行的内容。
核心语法+代码示例
# 第一步:打开csv文件(with语句会自动关闭文件,不用手动写close())
with open('student.csv', 'r', encoding='utf-8') as csv_file:
# 第二步:创建reader对象,相当于给文件配个「翻译官」
csv_reader = csv.reader(csv_file)
# 第三步:遍历reader对象,逐行读取数据
for row in csv_reader:
# 每一行row都是一个列表,对应表格的一行
print(row)
代码逐行白话解释
with open(...):打开文件的固定写法,with是Python的语法糖,作用是自动关闭文件,新手不用记文件关闭操作,避免出现文件占用、数据丢失的问题;'r':代表只读模式,专门用来读取文件,不能修改;encoding='utf-8':指定文件编码为UTF-8,这行千万不能少!2026年Windows系统默认编码是GBK,不指定UTF-8一定会出现中文乱码,这是新手第一大坑;csv.reader(csv_file):创建读取对象,把csv文件的纯文本转换成可遍历的列表数据;for row in csv_reader:逐行遍历,每循环一次,就拿到一行表格数据,存到row列表里。
运行结果
运行上面的代码,读取之前的学生成绩表,输出结果如下:
['姓名', '语文', '数学', '英语']
['张三', '92', '88', '95']
['李四', '85', '90', '89']
['王五', '78', '82', '91']
可以看到,表头和每一行数据都变成了列表,想拿某一列数据,直接用索引就行,比如拿姓名就是row[0],拿语文成绩就是row[1]。
3.2 字典式读取:DictReader(),按列名取数更省心
csv.DictReader()是新手更推荐的读取方式,尤其适合带表头的csv文件!它不会把行转成普通列表,而是转成字典,字典的键就是表格的表头,值就是对应的数据,再也不用记繁琐的列表索引,看名字就能取数,简直是新手福音。
核心语法+代码示例
with open('student.csv', 'r', encoding='utf-8') as csv_file:
# 创建DictReader对象,自动把第一行作为表头
csv_dict_reader = csv.DictReader(csv_file)
# 遍历读取每一行数据
for row in csv_dict_reader:
# 直接通过列名取数,不用记索引
print(f"姓名:{row['姓名']},语文成绩:{row['语文']},数学成绩:{row['数学']}")
运行结果
姓名:张三,语文成绩:92,数学成绩:88
姓名:李四,语文成绩:85,数学成绩:90
姓名:王五,语文成绩:78,数学成绩:82
这种方式就像给每个数据贴了「标签」,再也不会出现「索引记错取错数据」的问题,比如想拿英语成绩,直接写row['英语']就行,可读性直接拉满,新手优先用这种方法!
3.3 大文件批量读取:避免内存溢出
很多新手觉得csv只能处理小文件,其实不然,2026年处理几十万行的中型csv文件,用csv模块逐行读取也完全不会卡顿。因为reader()和DictReader()都是逐行加载数据,不会一次性把整个文件读到内存里,就像我们吃饭一口一口吃,不会一口吞完,自然不会出现内存溢出的问题。
这里给新手一个实用技巧:如果文件行数特别多,不想打印全部数据,可以加一个计数器,读取前N行测试:
with open('student.csv', 'r', encoding='utf-8') as csv_file:
csv_reader = csv.reader(csv_file)
# 计数器
count = 0
for row in csv_reader:
# 只打印前3行数据
if count< 3:
print(row)
count += 1
else:
break
四、csv文件写入:2种核心写法,新建/追加全搞定
学会了读,接下来就是写数据,csv模块的写入操作同样简单,分为新建文件写入和原有文件追加写入,对应两种写入方法,新手只要分清写入模式,再也不会踩坑。
4.1 基础写入:writer()函数,新建csv文件
csv.writer()是基础写入方法,用来新建csv文件并写入数据,分为写入单行和写入多行,核心是要注意文件打开模式和换行参数。
核心语法+代码示例(新建+写入多行)
# 定义要写入的学生成绩数据
student_data = [
['姓名', '语文', '数学', '英语'],
['张三', '92', '88', '95'],
['李四', '85', '90', '89'],
['王五', '78', '82', '91']
]
# 打开文件,'w'代表写入模式(新建文件/覆盖原有文件)
with open('student.csv', 'w', encoding='utf-8', newline='') as csv_file:
# 创建写入对象
csv_writer = csv.writer(csv_file)
# 写入多行数据(writerow写入单行,writerows写入多行)
csv_writer.writerows(student_data)
print("csv文件写入完成!")
新手必看重点
newline=''千万不能少:这是Python3写入csv的核心参数,不加这个参数,写入的文件每一行之间会出现空行,2026年所有Python3版本都需要加这个参数,彻底解决空行问题;- **
'w'模式:覆盖写入**:如果文件已经存在,用’w’模式会直接清空原有内容,重新写入,相当于把原来的表格擦掉重写,新手一定要谨慎; writerow():写入单行数据,适合逐行添加内容;writerows():写入多行数据,适合批量导入。
4.2 字典式写入:DictWriter(),按表头写入不错位
和读取对应,写入也有字典式写入方法csv.DictWriter(),适合按列名写入数据,不用手动对齐列表顺序,彻底避免列错位问题,适合数据结构固定的场景。
核心语法+代码示例
# 定义表头
field_names = ['姓名', '语文', '数学', '英语']
# 定义要写入的字典数据
student_dict_data = [
{'姓名': '张三', '语文': '92', '数学': '88', '英语': '95'},
{'姓名': '李四', '语文': '85', '数学': '90', '英语': '89'},
{'姓名': '王五', '语文': '78', '数学': '82', '英语': '91'}
]
with open('student_dict.csv', 'w', encoding='utf-8', newline='') as csv_file:
# 创建字典写入对象,指定表头
csv_writer = csv.DictWriter(csv_file, fieldnames=field_names)
# 写入表头
csv_writer.writeheader()
# 写入多行数据
csv_writer.writerows(student_dict_data)
这种方式的好处是,哪怕字典里的键顺序乱了,写入csv后也会按照指定的表头顺序排列,再也不会出现「姓名写到数学列」的低级错误,对新手极其友好。
4.3 追加写入:不覆盖原有数据,实用必备
很多时候我们需要往已有的csv文件里添加新数据,而不是覆盖原有内容,这时候只需要把文件打开模式从'w'改成**'a'(追加模式)**,其他代码完全不变!
追加写入代码示例
# 要追加的新学生数据
new_student = [['赵六', '88', '95', '90']]
with open('student.csv', 'a', encoding='utf-8', newline='') as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerows(new_student)
print("数据追加完成!")
运行后,原有的学生数据不会丢失,直接在表格最后一行添加赵六的成绩,这是日常开发中最常用的写入方式,比如爬虫每爬取一条数据就追加一次,完全不用担心里程数据丢失。
五、2026年小白必避:csv模块5大高频坑
新手用csv模块,90%的报错都是因为踩了这几个坑,我把2026年粉丝反馈最多的问题整理出来,逐个给解决办法,看完再也不用百度搜报错。
坑1:中文乱码
报错表现:打印或者写入的中文变成乱码、问号
解决办法:所有文件操作都加上encoding='utf-8',如果还是乱码,换成encoding='utf-8-sig'(Windows系统专属解决),永远别用默认编码。
坑2:写入文件有空行
报错表现:csv文件每一行数据之间有空白行
解决办法:写入文件时,open()函数必须加newline=''参数,这是Python3的固定要求,没有例外。
坑3:文件路径找不到
报错表现:FileNotFoundError
解决办法:新手优先用相对路径,把csv文件和Python代码放在同一个文件夹里,直接写文件名;如果用绝对路径,Windows系统路径用/或者\\,别用单个\。
坑4:数据含逗号/引号,自动拆分列
问题表现:数据里有逗号,写入后被拆成两列
解决办法:不用手动处理!csv模块会自动给包含分隔符的字段添加引号,保证数据不拆分,新手完全不用操心转义问题。
坑5:用w模式误删原有数据
问题表现:原有表格数据全部消失
解决办法:修改已有文件用'a'追加模式,新建文件用'w'模式,养成先看模式再写代码的习惯。
六、实战案例:简易学生成绩统计系统
咱们把前面学的读写操作结合起来,做一个完整的小案例:写入学生成绩→读取成绩→筛选及格学生,代码直接复制就能运行,新手看完就能上手实战。
import csv
# 1. 写入学生成绩数据
score_data = [
['姓名', '语文', '数学', '英语'],
['张三', '92', '58', '95'],
['李四', '85', '90', '89'],
['王五', '78', '82', '55'],
['赵六', '88', '95', '90']
]
with open('score.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(score_data)
# 2. 读取并筛选数学及格(≥60分)的学生
print("数学及格的学生:")
with open('score.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
# 注意:读取的数据是字符串,需要转成整数比较
math_score = int(row['数学'])
if math_score >= 60:
print(f"姓名:{row['姓名']},数学成绩:{math_score}")
运行结果
数学及格的学生:
姓名:李四,数学成绩:90
姓名:王五,数学成绩:82
姓名:赵六,数学成绩:95
这个案例涵盖了csv模块的核心读写操作,还解决了「字符串转数字」的小细节,新手完全可以在此基础上扩展,比如统计平均分、筛选各科及格学生,轻松实现简易办公自动化。
七、csv模块选型建议:什么时候用它最合适?
最后给新手一个清晰的选型思路,避免大家盲目选择库:
- 用csv模块的场景:处理简单纯文本表格、小批量数据、无格式要求、不想装第三方库、跨平台数据交换;
- 不用csv模块的场景:处理带公式/格式的Excel文件、大数据量分析、复杂数据计算,这种情况再用pandas、openpyxl。
说白了,csv模块就是Python表格处理的「入门神器」,轻便、简单、无依赖,新手先吃透它,再去学更复杂的库,循序渐进才是最快的学习方式。
结语
Python csv模块看似基础,却是日常开发中使用率极高的工具,没有复杂的语法,没有繁琐的依赖,只要掌握读写的核心方法、避开几个常见坑,就能轻松搞定绝大多数简单表格处理需求。
学习Python不要一味追求高大上的库,把原生基础模块吃透,反而能解决大部分实际问题,就像csv模块,看似不起眼,却能让你的数据处理效率翻倍。希望这篇文章能帮到零基础小白,彻底搞定csv文件的读写操作,后续我会继续分享Python实用基础模块,带大家一步步夯实Python编程基础。
P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了
590

被折叠的 条评论
为什么被折叠?



