一、学前花絮
对于python的学习,我们已经学会了大部分语法相关的知识。有了这些基础知识加上函数和类/对象的使用,我们几乎可以编写任何类型的程序了。
但正如前面说过,python保罗万象。这有点像什么呢?比如我们都有文字基础(这相当于python基础知识),但有几个人能成为作家、诗人呢?这就如同我们有了python基础知识,但不一定能够成为好的程序员。
那么怎么办呢?天赋也是需要实践的,更何况我们都是普通人。所以大量有针对性上机实操是最好的学习方法。
二、Python3 File(文件) 方法
2.1 覆盖最常见的 5 类场景:
- 一次性读写(小文件)
- 逐行遍历(大文件)
- 二进制 + 编码
- 安全写(临时文件 + 原子替换)
- pathlib 写法(官方推荐“现代风格”)
所有代码在 CPython 3.8+ 通过,Linux/Windows/Mac 均可直接运行。
2.2 基础 API 速查(文本模式):
|
模式 |
含义 |
文件不存在时 |
指针位置 |
|
r |
只读(默认) |
抛 FileNotFoundError |
开头 |
|
w |
清空写 |
创建新文件 |
开头 |
|
x |
独占创建 |
抛 FileExistsError |
开头 |
|
a |
追加写 |
创建新文件 |
末尾 |
|
+ |
更新(可读可写) |
与上面组合 |
— |
2.3 5个实战示例
小文件的读写
打开今日头条查看图片详情
二进制文件的读写
文件字符编码
csv文件的读写
主程序调用:
主程序
运行结果如下:
运行结果
总结以上使用文件的方法:
- 小文件直接读写: read()/write(),大文件用遍历: for line in f
- 非文本用 b 模式,编码问题在 open() 一层解决
- 重要数据“先写临时再 shutil.move”,防断电丢文件
- 新项目优先用 pathlib,逻辑更面向对象
- 小结
Python文件的读写是Python语言中很重要的一部分,之前对Json文件的读写做了专门的阐述。除了Json文件外,其实还有很多类型的文件。比如办公文件word、Excel、pdf等,还有CSV文件、XML文件及一般文本文件。特别的,还有音视频文件和图片等文件。以上这些文件都有自己的处理方法,我们常说的大数据处理,就是要包含几乎所有类型的文件进行处理。
让我们保持学习热情,多做练习。我们下期再见!
Python学习【29】: Python csv 模块
- 学前花絮
前面的文章学习了Python Json文件的处理、一般文件的读取方法,本文针对csv文件的处理进行说明。和Json文件一样,csv文件也是很常用的文件格式。它的特点是以逗号为分隔符的文本文件,其实可以直接用Excel表格打开。我们会看到csv就是一种二维表格数据,第一行一般是表头标题,后面的行就是数据内容了。
而如果你学过mysql数据库,那么csv也可以被认为是一张数据库表,第一行可认为是数据库表的表结构定义(多少字段、字段类型)。通过Python语言很容易把csv文件导入到mysql数据库中。
- Python csv 模块
CSV(Comma-Separated Values)文件是一种常见的文件格式,用于存储表格数据。
CSV 文件由纯文本组成,每一行代表表格中的一行数据,而每一列则通过逗号(或其他分隔符)分隔。
CSV 文件通常用于数据交换,因为它简单且易于处理。
Python 提供了一个内置的 csv 模块,用于读取和写入 CSV 文件。这个模块简化了处理 CSV 文件的过程,使得开发者可以轻松地操作表格数据。
2.1. 写入 CSV 文件
要写入 CSV 文件,可以使用 csv.writer 对象。以下是一个示例:
csv.writer对象
代码解释:
open(‘output.csv’, mode=’w’, encoding=’utf-8′, newline=”):以写入模式打开名为 output.csv 的文件,并指定编码为 UTF-8。newline=” 用于避免在 Windows 系统中出现空行。
csv.writer(file):创建一个 csv.writer 对象,用于写入文件内容。
csv_writer.writerow(row):将每一行数据写入文件。
2.2读取 CSV 文件
要读取 CSV 文件,可以使用 csv.reader 对象。以下是一个简单的示例:
csv.reader对象

代码解释:
open(‘data.csv’, mode=’r’, encoding=’utf-8′):以只读模式打开名为 data.csv 的文件,并指定编码为 UTF-8。
csv.reader(file):创建一个 csv.reader 对象,用于读取文件内容。
for row in csv_reader:逐行读取文件内容,每一行数据会被解析为一个列表。
执行结果如下:
输出结果
以上输出可以看出,以列表形式读取数据。
2.3 使用字典读取和写入 CSV 文件
csv 模块还提供了 DictReader 和 DictWriter 类,它们可以将 CSV 文件的每一行解析为字典,或者将字典写入 CSV 文件。
使用 DictReader 读取 CSV 文件:
字典读取
输出结果如下:
输出结果
对比2、3的输出结果,我们可以看出2是保留了data文件的csv原始风格(第一行是标题,后面是数据);而3对于用户显得更友好,解释了数据的含义,本质上是把第一行当做key,其他行当做value。
使用 DictWriter 写入 CSV 文件:
字典写入
2.4 csv 模块核心方法:
|
csv.reader() |
从文件对象读取 CSV 数据 |
reader = csv.reader(file) |
|
csv.writer() |
将数据写入 CSV 文件 |
writer = csv.writer(file) |
|
csv.DictReader() |
将 CSV 行读取为字典(带表头) |
dict_reader = csv.DictReader(file) |
|
csv.DictWriter() |
将字典写入 CSV 文件(需指定字段名) |
dict_writer = csv.DictWriter(file, fieldnames) |
|
csv.register_dialect() |
注册自定义 CSV 格式(如分隔符) |
csv.register_dialect(‘mydialect’, delimiter=’|’) |
|
csv.unregister_dialect() |
删除已注册的方言 |
csv.unregister_dialect(‘mydialect’) |
|
csv.list_dialects() |
列出所有已注册的方言 |
print(csv.list_dialects()) |
csv.reader 和 csv.writer 对象常用方法:
|
__next__() |
迭代读取下一行(或使用 for 循环) |
reader |
|
writerow(row) |
写入单行数据 |
writer |
|
writerows(rows) |
写入多行数据(列表的列表) |
writer |
csv.DictReader 和 csv.DictWriter 对象特性:
|
fieldnames |
字段名列表(DictReader 自动从首行获取) |
dict_reader.fieldnames |
|
writeheader() |
写入表头行(DictWriter 专用) |
dict_writer.writeheader() |
- 小结
本章内容针对csv文件的读写进行了专题讨论,csv文件是大数据工程项目中非常重要的一种数据,可以认为是一种二维表格数据,也可以认为是半结构化数据。介于结构化数据与非结构化数据之间。
让我们保持学习热情,多做练习。我们下期再见!
正能量