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
错误。