在 Python 中,文件操作是通过内置的 open()
函数实现的,支持多种模式来读写文件,包括文本文件和二进制文件。Python 提供了丰富的文件操作方法,能够方便地进行文件的读取、写入、关闭等操作。
文件操作的基本步骤
- 打开文件:使用
open()
函数。 - 读写文件:根据需要进行文件的读或写操作。
- 关闭文件:使用
close()
方法或with
语句块自动关闭文件。
open()
函数
open(file, mode='r', encoding=None)
file
:要打开的文件名(包括路径)。mode
:指定打开文件的模式,常见模式包括:'r'
:只读模式(默认),文件必须存在。'w'
:写入模式,会先清空文件内容,文件不存在则创建。'a'
:追加模式,在文件末尾添加内容,文件不存在则创建。'b'
:二进制模式,适用于处理非文本文件。't'
:文本模式(默认),处理文本文件。'x'
:写入模式,文件必须不存在,否则抛出异常。
encoding
:指定文件编码,常用于读取或写入文本文件时指定编码,如utf-8
。
常见的文件操作方法
read(size)
:读取指定字节数的数据,如果不指定size
,则读取整个文件。readline()
:按行读取文件内容,返回文件的一行。readlines()
:读取文件的所有行并返回一个列表,每一行为一个元素。write(string)
:将字符串写入文件。writelines(list)
:将多个字符串写入文件,参数是字符串列表。close()
:关闭文件,释放资源。seek(offset, from)
:移动文件指针到指定位置。tell()
:返回文件指针当前位置。
1. 文件读取的基本示例
示例:读取整个文件内容
# 使用 'r' 模式打开文件,表示只读模式
file = open("example.txt", "r", encoding="utf-8")
# 读取整个文件内容
content = file.read()
print(content)
# 关闭文件
file.close()
示例:按行读取文件
# 使用 'r' 模式按行读取文件内容
file = open("example.txt", "r", encoding="utf-8")
# 按行读取文件内容
for line in file:
print(line.strip()) # 使用 strip() 去除换行符
# 关闭文件
file.close()
示例:使用 readline()
方法按行读取
file = open("example.txt", "r", encoding="utf-8")
# 读取一行内容
line1 = file.readline()
print(line1.strip())
# 读取下一行内容
line2 = file.readline()
print(line2.strip())
file.close()
示例:使用 readlines()
读取文件的所有行
file = open("example.txt", "r", encoding="utf-8")
# 读取文件的所有行,返回一个列表
lines = file.readlines()
for line in lines:
print(line.strip())
file.close()
2. 文件写入的基本示例
示例:写入文件
# 使用 'w' 模式打开文件(写模式),如果文件不存在会创建新文件
file = open("output.txt", "w", encoding="utf-8")
# 写入单行内容
file.write("Hello, World!\n")
# 写入多行内容
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
file.writelines(lines)
file.close()
示例:追加写入文件
# 使用 'a' 模式打开文件(追加模式),不会清空文件内容
file = open("output.txt", "a", encoding="utf-8")
# 追加内容
file.write("This is an appended line.\n")
file.close()
3. 使用 with
语句块自动管理文件
在 Python 中,with
语句块提供了更安全和简洁的方式来处理文件。在 with
语句块中打开的文件,在块结束时会自动关闭,无需显式调用 close()
。
示例:使用 with
语句读取文件
# 使用 with 自动关闭文件
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
示例:使用 with
语句写入文件
# 使用 with 自动关闭文件
with open("output.txt", "w", encoding="utf-8") as file:
file.write("This is written using 'with' block.\n")
4. 读写二进制文件
在处理图片、音频、视频等非文本文件时,需要使用二进制模式打开文件。二进制模式使用 'b'
来标记。
示例:读取二进制文件(如图片)
# 使用 'rb' 模式打开二进制文件
with open("example_image.png", "rb") as file:
binary_content = file.read()
# 打印文件的前 20 个字节
print(binary_content[:20])
示例:写入二进制文件
# 使用 'wb' 模式写入二进制文件
with open("output_image.png", "wb") as file:
file.write(binary_content)
5. 文件指针操作
文件指针用于指定文件读取或写入的当前位置,通常在需要跳过部分文件内容时使用。seek()
和 tell()
方法用于控制文件指针。
seek(offset, from)
:移动文件指针到指定位置。offset
:偏移量。from
:参考位置,0
表示文件开头,1
表示当前位置,2
表示文件末尾。
tell()
:返回文件指针当前的位置。
示例:文件指针操作
with open("example.txt", "r", encoding="utf-8") as file:
print(file.read(5)) # 读取前 5 个字符
print(file.tell()) # 返回文件指针当前位置(5)
file.seek(0) # 将文件指针移回文件开头
print(file.read(5)) # 再次读取前 5 个字符
6. 文件的异常处理
在文件操作过程中可能会遇到文件不存在或读写失败等问题。可以使用 try...except
块来处理异常。
示例:处理文件打开异常
try:
with open("nonexistent_file.txt", "r", encoding="utf-8") as file:
content = file.read()
except FileNotFoundError:
print("File not found!")
except IOError:
print("Error while reading the file!")
总结
- 读取文件:可以使用
read()
读取整个文件内容,readline()
按行读取,或者readlines()
读取文件的所有行并返回列表。 - 写入文件:使用
write()
写入内容,或者使用writelines()
写入多个字符串。 - 文件模式:通过
open()
函数指定文件模式,常见模式包括'r'
、'w'
、'a'
、'b'
、't'
。 - 文件指针:可以使用
seek()
和tell()
控制文件指针的位置。 - 异常处理:通过
try...except
块处理文件操作中的异常情况。
通过这些方法,Python 提供了强大的文件操作能力,使得处理文件变得非常方便。