AI项目博客
记录 AI 工程实践与大模型应用

Python 学习笔记 27|文件的分类

1. 文件的分类

1️⃣纯文本文件

  • 读取和存储时,要遵循某种『字符编码』规范(如:UTF-8 等)进行编码和解码,最终以『二进制』的形式存储。
  • 『纯文本文件』最终会呈现为:可以直接阅读的文本信息。
  • 常见的『纯文本文件』有:.txt .py .md .html 等。

2️⃣二进制文件

  • 读取和存储时,不涉及字符编码,会按照某种『文件格式规范』把内容转为『二进制』进行存储。
  • 二进制文件需要由『能够识别其格式的软件』进行解析,最终的呈现形式多种多样(音频、视频、图像、幻灯片等)。
  • 常见的二进制文件有:.mp3 .mp4 .doc .ppt .jpg .png 等。

2. 绝对路径 vs 相对路径

1️⃣绝对路径:

从文件系统的『根目录』开始,完整描述文件或目录所在的位置。

举例:D:/demo/test/a.txt

2️⃣相对路径:

以当前『工作目录』为参照,描述目标文件或目录相对于它的位置。

举例:../../a.txt(其中..表示上一级目录)

3. Python 中操作文件的标准流程

标准流程成如下:

  • 创建『文件对象』
  • 操作文件(读取、写入 等)
  • 关闭文件

文件操作的核心 —— open函数

open函数最常用的三个参数如下:

  • file:要操作的文件路径
  • mode:文件的打开模式

r :读取(默认值)

w :写入,并先截断文件

x :排它性创建,如果文件已存在,则创建失败

a :打开文件用于写入,如果文件存在,则在文件末尾追加内容

b :二进制模式

t :文本模式(默认值)

+ :打开用于更新(读取与写入)

  • encoding:字符编码

4. 读取文件

1️⃣read方法

  • 概述:使用『文件对象』的read方法,读取文件中的内容。
  • 方法说明:
  • read(size)中的size是可选参数。

🔸若不传递size参数,表示:读取文件中所有的内容(注意内存占用!)。

🔸若传递了size参数,表示:读取文件中指定个数的字符,或指定大小的字节。

  • read会从上一次read的位置继续读取,若到达文件末尾后继续读取,将返回空字符串。
  • 示例代码:
# 第一步:创建『文件对象』
# 完整写法
# file = open(file='a.txt', mode='rt', encoding='utf-8')

# 简写
file = open('a.txt', 'rt', encoding='utf-8')

# 使用绝对路径读取
# file = open('D:/test/atguigu.txt', 'rt', encoding='utf-8')

# 读取二进制文件
# file = open('D:/test/girl.jpg', 'rb')

# 第二步:操作文件(读取)
# 多次调用read去逐步读取文件
r1 = file.read(2)
r2 = file.read(3)
r3 = file.read(4)
r4 = file.read()
print(r1, end='')
print(r2, end='')
print(r3, end='')
print(r4, end='')

# 用循环配合多次read(对内存友好)
while True:
    result = file.read(10)
    if result == '':
        break
    print(result, end='')

# 第三步:关闭文件
file.close()

2️⃣readline方法

  • 概述:使用文件对象的readline方法,读取文件中的一行。
  • 方法说明:
  • readline(size) 中的size是可选参数。

🔸若不传递size参数,表示:读取当前这一行所有的内容。

🔸若传递了size参数,表示:表示读取当前行时,最多能读取的字符数,或字节数

🔸注意:size不是行数。

  • readline方法,也是从上一次位置继续读取,若到达文件末尾后继续读取,返回空字符串。
  • 示例代码:
# 第一步:创建『文件对象』
file = open('a.txt', 'rt', encoding='utf-8')

# 第二步:操作文件(读取)
# 依次调用readline逐行读取
r1 = file.readline()
r2 = file.readline()
r3 = file.readline()
r4 = file.readline()
print(r1.strip())
print(r2.strip())
print(r3.strip())
print(r4.strip())

# 通过循环配合readline逐行读取
while True:
    line = file.readline()
    if line == '':
        break
    # print(line.strip())
    print(line, end='')

# 第三步:关闭文件
file.close()

3️⃣for 循环遍历文件对象

  • 概述:可以使用for循环直接遍历文件对象(逐行遍历)。
  • 示例代码:
# 第一步:创建『文件对象』
file = open('a.txt', 'rt', encoding='utf-8')

# 第二步:操作文件(读取)
for line in file:
    print(line, end='')

# 第三步:关闭文件
file.close()

4️⃣readlines方法

  • 概述:使用文件对象的readlines方法,一次性按“行”读完,返回一个列表。
  • 方法说明:
  • readlines(hint) 中的hint是可选参数。

🔸若不传递hint参数,表示:读取当前文件的所有行。

🔸若传递了hint参数,表示:期望读取的【字符个数 或 字节数】(hint不是行数)。

  • 注意:由于readlines是一次性读取文件的所有内容,所以不适合读取体积较大的文件。
  • 示例代码:
# 第一步:创建『文件对象』
file = open('a.txt', 'rt', encoding='utf-8')

# 第二步:操作文件(读取)
result = file.readlines()
print(result)

# 第三步:关闭文件
file.close()

⭐️最佳实践

  • 概述:更推荐使用with上下文管理器,结合for循环遍历,逐行读取文件。
with open('a.txt', 'rt', encoding='utf-8') as file:
    for line in file:
        print(line, end='')
赞(0)
未经允许不得转载:AI项目博客 » Python 学习笔记 27|文件的分类

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册