22.1 文件的打开(掌握)
在 Python 中,文件可以通过内置的 open() 函数来打开。open() 函数接受两个主要参数:文件路径和文件模式。
基本语法
file = open("文件路径", "模式")文件模式
常用的文件模式如下:
| 模式 | 含义 |
|---|---|
'r' | 读取模式(默认值),文件必须存在,读取内容。 |
'w' | 写入模式,若文件已存在则清空文件,若不存在则创建新文件。 |
'a' | 追加模式,在文件末尾添加内容。若文件不存在则创建新文件。 |
'b' | 以二进制模式读写文件,用 'rb'、'wb' 等组合形式。 |
'r+' | 读写模式,可以同时读取和写入。 |
'w+' | 读写模式,文件存在则清空,不存在则创建。 |
'a+' | 读写模式,在文件末尾追加内容,不存在则创建。 |
示例:打开文件进行读取
file = open("example.txt", "r")
# 执行文件读取或其他操作
file.close() # 关闭文件22.2 文件的读取(掌握)
Python 提供多种方法来读取文件内容。常用的读取方法有 read()、readline() 和 readlines()。
22.2.1 read() 读取整个文件内容
示例:
file = open("example.txt", "r") content = file.read() print(content) # 输出整个文件内容 file.close()
22.2.2 readline() 逐行读取
示例:
file = open("example.txt", "r") line = file.readline() # 读取文件的第一行 while line: print(line, end="") # 打印每行内容 line = file.readline() # 继续读取下一行 file.close()
22.2.3 readlines() 读取所有行,返回列表
示例:
file = open("example.txt", "r") lines = file.readlines() # 读取所有行,返回列表 for line in lines: print(line, end="") # 打印每行内容 file.close()
22.3 文件的写入(掌握)
使用 'w' 模式或 'w+' 模式可以将内容写入文件,注意 'w' 模式会清空文件内容。写入可以通过 write() 或 writelines() 方法实现。
21.3.1 write() 写入字符串
示例:
file = open("example.txt", "w") file.write("Hello, world!\n") # 写入字符串 file.write("Python 文件写入示例。\n") file.close()
22.3.2 writelines() 写入多行
示例:
file = open("example.txt", "w") lines = ["第一行\n", "第二行\n", "第三行\n"] file.writelines(lines) # 写入多行内容 file.close()
22.4 文件的追加(掌握)
使用 'a' 模式可以在文件末尾追加内容。追加写入不会清空文件内容,而是在已有内容的末尾追加。
示例:
file = open("example.txt", "a") file.write("这是追加的一行。\n") # 在文件末尾追加 file.close()
22.5 使用 with 语句自动管理文件(掌握)
在文件操作中,手动关闭文件是必须的,但有时可能会忘记使用 close()。使用 with 语句可以确保文件操作完成后自动关闭文件,即使在执行过程中发生错误。
示例:使用 with 语句读取文件
with open("example.txt", "r") as file:
content = file.read()
print(content)
# 此时文件已自动关闭示例:使用 with 语句写入文件
with open("example.txt", "w") as file:
file.write("使用 with 语句写入内容。\n")
# 文件已自动关闭22.6 文件指针的移动(了解)
文件指针用于指示当前读写的位置。使用 seek() 和 tell() 可以控制和获取指针的位置。
22.6.1 seek(offset, whence) 移动指针
参数:
offset:指针移动的偏移量。whence:移动的起始位置(0表示文件开头,1表示当前位置,2表示文件末尾)。
示例:
with open("example.txt", "r") as file: file.seek(5) # 将指针移动到文件的第 5 个字节 print(file.read()) # 从第 5 个字节开始读取
22.6.2 tell() 获取当前指针位置
示例:
with open("example.txt", "r") as file: print(file.tell()) # 输出指针当前位置 file.read(5) # 读取 5 个字节 print(file.tell()) # 输出新的指针位置
22.7 文件的其他操作(了解)
Python 提供了一些内置的文件操作方法,如 os 模块中的 remove()、rename()、exists() 等,用于对文件进行删除、重命名、检查是否存在等操作。
删除文件
使用 os.remove() 删除指定文件。
import os
os.remove("example.txt") # 删除文件 example.txt重命名文件
使用 os.rename() 重命名文件。
os.rename("old_name.txt", "new_name.txt") # 重命名文件检查文件是否存在
使用 os.path.exists() 检查文件是否存在。
if os.path.exists("example.txt"):
print("文件存在")
else:
print("文件不存在")22.8 二进制文件的读写(了解)
对于非文本文件(如图片、视频、音频等),需要使用二进制模式读写,以避免编码问题。使用模式 'rb' 读取二进制文件,使用 'wb' 写入二进制文件。
示例:读取二进制文件
with open("example.jpg", "rb") as file:
content = file.read()
print(content) # 输出二进制内容示例:写入二进制文件
with open("example_copy.jpg", "wb") as file:
file.write(content) # 将读取的二进制内容写入新文件22.9 文件读写的常见问题(掌握)
- 忘记关闭文件:在文件操作结束后要记得关闭文件,或使用
with语句自动管理文件。 - 文件路径错误:检查文件路径是否正确,可以使用绝对路径或相对路径。
- 文件编码问题:如果文件包含非 ASCII 字符,建议在打开文件时指定编码,如
open("example.txt", "r", encoding="utf-8")。 - 文件不存在:在打开文件之前检查文件是否存在,避免
FileNotFoundError错误。 - 文件权限错误:确保对文件具有相应的读写权限,否则可能会遇到
PermissionError错误。