一、学前花絮

对于python的学习,我们已经学会了大部分语法相关的知识。有了这些基础知识加上函数和类/对象的使用,我们几乎可以编写任何类型的程序了。

但正如前面说过,python保罗万象。这有点像什么呢?比如我们都有文字基础(这相当于python基础知识),但有几个人能成为作家、诗人呢?这就如同我们有了python基础知识,但不一定能够成为好的程序员。

那么怎么办呢?天赋也是需要实践的,更何况我们都是普通人。所以大量有针对性上机实操是最好的学习方法。

二、Python3 File(文件) 方法

2.1 覆盖最常见的 5 类场景:

  1. 一次性读写(小文件)
  2. 逐行遍历(大文件)
  3. 二进制 + 编码
  4. 安全写(临时文件 + 原子替换)
  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,逻辑更面向对象
  1. 小结

Python文件的读写是Python语言中很重要的一部分,之前对Json文件的读写做了专门的阐述。除了Json文件外,其实还有很多类型的文件。比如办公文件word、Excel、pdf等,还有CSV文件、XML文件及一般文本文件。特别的,还有音视频文件和图片等文件。以上这些文件都有自己的处理方法,我们常说的大数据处理,就是要包含几乎所有类型的文件进行处理。

让我们保持学习热情,多做练习。我们下期再见!

Python学习【29】: Python csv 模块

  1. 学前花絮

前面的文章学习了Python Json文件的处理、一般文件的读取方法,本文针对csv文件的处理进行说明。和Json文件一样,csv文件也是很常用的文件格式。它的特点是以逗号为分隔符的文本文件,其实可以直接用Excel表格打开。我们会看到csv就是一种二维表格数据,第一行一般是表头标题,后面的行就是数据内容了。

而如果你学过mysql数据库,那么csv也可以被认为是一张数据库表,第一行可认为是数据库表的表结构定义(多少字段、字段类型)。通过Python语言很容易把csv文件导入到mysql数据库中。

  1. 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对象

Python学习【28】:Python File(文件) 方法,以实例说明

代码解释:

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()

  1. 小结

本章内容针对csv文件的读写进行了专题讨论,csv文件是大数据工程项目中非常重要的一种数据,可以认为是一种二维表格数据,也可以认为是半结构化数据。介于结构化数据与非结构化数据之间。

让我们保持学习热情,多做练习。我们下期再见!

正能量

#python#