(四)处理文件
计算机中的文件根据存储内容和格式可分为文本文件和二进制文件。文本文件由可读字符组成,如 .txt、.csv 等,使用字符编码存储;二进制文件以二进制数据形式存储,如图片、音频、可执行文件等,需特定软件解析。处理文件通常是指文件的读取和修改,下面分别介绍文本文件和二进制文件的处理文件方法:
1、文本文件的读取和修改
(1)文本文件读取
使用 open() 函数打开文件后,会返回文件对象,可以通过文件对象的下列方法对文件进行读取:
read() 方法一次性读取整个文件;
readline() 方法读取一行;
readlines() 方法读取所有行,并返回一个列表。

(2)文本文件写入和修改文件
可以通过文件对象的下列方法对文件进行写入和修改:
write() 方法写入字符串;
writelines() 方法写入一个字符串列表;
mode 使用 'a' 会追加内容,使用 'w' 会覆盖原有内容;
如果要修改文件内容,通常需要读取整个文件内容到内存中(例如,使用 readlines() 读取行列表),修改后重新写入(因为 Python 标准库不直接支持原地修改文件内容)。


2、二进制文件的读取和修改
(1)bytes 类型
二进制文件需要使用二进制类型进行处理。bytes 类型是 Python 中用于处理二进制数据的基本数据类型,它主要用于网络通信、文件存储等场景。bytes 是不可变的序列对象,与字符串类型不同的是,bytes 类型中的元素是整数值(0 到 255 之间的整数),而不是 Unicode 字符。
① 创建 bytes 对象最常见的方式是使用 b 前缀。

② 可以使用 bytes() 函数将其他类型的对象转换为 bytes 类型。
bytes() 函数语法格式为:
bytes(source[, encoding, errors])
|
bytes() 函数使用示例如下:

③ 与字符串类型类似,bytes 类型也支持切片、拼接、查找、替换等操作。bytes 类型是不可变的,修改操作需要创建一个新的 bytes 对象。

④ bytes 类型中的元素是整数值,在进行比较操作时,需要使用 ord() 函数将字符转换为对应的整数值。

(2)二进制文件的读取
二进制文件的读取,通常使用 read() 方法一次性读取整个文件,适合处理小型(小于100M)二进制文件。

也可以使用 read(size) 语法,读取文件中的指定字节数。

二进制文件与文本文件的读取不同,通常不会使用 readline() 和readlines()。如果处理大容量文件,可以使用 read(size) 来分块(1024-8192字节)读取文件。
(3)二进制文件的写入和修改
二进制文件写入数据时,首先需确保数据是以字节形式提供。可以使用 write() 写入字节。

也可以使用 writelines() 方法写入字节。不过需要注意,writelines() 方法需要一个可迭代对象(如列表)作为输入,其中每个元素都应该以字节形式提供。

二进制文件的修改与文本文件修改类似,需要先读取文件内容到内存,然后修改这部分内容,最后再写回文件实现。
(五)关闭文件
当使用 with 语句时,文件会在 with 代码块执行完毕后自动关闭。如果不使用 with 语句,则需要手动调用 close() 方法来关闭文件。

Python 还可以通过其他内置模块和第三方模块进行文件操作,例如:io 模块、pathlib 模块、codecs模块、requests 模块等等。并且针对不同文件类型,例如:excel、json、word 等,也有很多模块可以进行快速访问,这些内容后续会部分涉及(也有部分可能不涉及),建议大家到网上搜索相关资料自行学习。Python 支持库丰富、功能强大、方便调用等特点也正是其核心优势,大家应养成查阅文档、自我学习、勤于测试、耐心坚持的良好习惯。