Python 如何读取和写入文件
文件操作是编程中常见的任务,几乎所有编程语言都支持文件的读写功能。在 Python 中,文件操作简单直观,适用于从初学者到经验丰富的开发者。无论是处理小型文本文件,还是需要处理大型数据文件,Python 提供了丰富的工具和方法来完成这些任务。
本文将带你了解如何在 Python 中读取和写入文件,解释不同的文件模式,并展示如何使用 Python 提供的内置函数高效地进行文件操作。
一、文件的基本概念
文件可以看作是存储在硬盘上的数据集合,它有一个文件名和路径。文件可以是文本文件,也可以是二进制文件。文本文件以人类可读的字符存储数据,比如 .txt
文件;而二进制文件存储的是计算机能够识别的二进制数据,如 .jpg
图片文件、.exe
可执行文件等。
在 Python 中,文件操作的核心步骤可以分为以下几步:
- 打开文件:使用
open()
函数打开文件。 - 读写文件:根据需求,进行文件的读取或写入。
- 关闭文件:文件操作完成后,使用
close()
函数关闭文件。
1.1 文件模式
Python 的 open()
函数用于打开文件,它需要两个参数:文件名和文件模式。文件模式决定了文件是以读、写还是其他模式打开。常见的文件模式有:
r
:以只读模式打开文件。文件必须存在,否则会报错。w
:以写模式打开文件。如果文件不存在,会创建新文件;如果文件存在,则会清空文件内容。a
:以追加模式打开文件。如果文件不存在,会创建新文件;如果文件存在,数据会追加到文件末尾。b
:以二进制模式打开文件。适用于非文本文件(如图片、音频等)。t
:以文本模式打开文件(默认值)。r+
:以读写模式打开文件,允许读取和写入。
例如,以下是使用 open()
函数以只读模式打开一个文本文件的代码:
file = open('example.txt', 'r')
二、读取文件
Python 提供了几种不同的方式来读取文件内容。根据需求的不同,我们可以一次读取整个文件、一行行读取,或者按字节读取。
2.1 读取整个文件
最简单的读取方式是使用 read()
方法,它会将文件的全部内容作为字符串读取出来:
with open('example.txt', 'r') as file:
content = file.read()
print(content)
with
语句:推荐使用with
语句来处理文件操作,它能够确保文件在使用完毕后自动关闭,避免手动调用file.close()
。read()
:一次性读取整个文件内容。
2.2 逐行读取文件
如果文件较大,我们可以选择逐行读取,以节省内存。Python 提供了 readline()
和 readlines()
方法:
readline()
:每次只读取文件中的一行。readlines()
:读取所有行,并返回一个包含每行内容的列表。
with open('example.txt', 'r') as file:
for line in file:
print(line.strip()) # strip() 去除行尾的换行符
这段代码使用 for
循环逐行读取文件内容,并去除每行末尾的换行符。
2.3 读取固定大小的内容
有时我们可能只需要读取文件的一部分内容,可以使用 read(size)
方法来读取指定字节数的数据。
with open('example.txt', 'r') as file:
chunk = file.read(100) # 读取文件的前 100 个字符
print(chunk)
这种方法适用于需要处理较大文件的场景,避免一次性读取整个文件导致内存占用过高。
2.4 读取二进制文件
当处理非文本文件时(如图片、音频等),我们需要以二进制模式打开文件并读取其内容。
with open('image.jpg', 'rb') as file:
binary_data = file.read()
print(binary_data) # 打印二进制数据
在这个例子中,我们以 rb
模式打开文件,表示以二进制读取模式。
三、写入文件
与读取文件类似,Python 也提供了多种方法来写入文件。根据文件模式的不同,写入时可以选择覆盖文件或向文件末尾追加内容。
3.1 写入新文件
使用 w
模式可以创建一个新的文件,或者清空已有文件的内容并重新写入数据。
with open('output.txt', 'w') as file:
file.write('这是写入文件的一行文本。\n')
file.write('这是另一行文本。\n')
write()
方法:将字符串写入文件。- 注意:使用
w
模式时,如果文件已存在,文件内容会被清空。
3.2 追加内容
如果我们希望向已有文件中添加新内容,而不是覆盖现有内容,可以使用 a
模式。
with open('output.txt', 'a') as file:
file.write('这是追加的一行文本。\n')
这种方式常用于记录日志或保存处理结果。
3.3 写入二进制文件
处理二进制文件时,需要以二进制模式写入。下面是写入二进制数据的示例:
with open('output.bin', 'wb') as file:
file.write(b'\x00\xFF\x10') # 写入二进制数据
这里的 b
前缀表示字节序列,即二进制数据。
四、文件的其他操作
除了读取和写入,Python 还提供了许多其他文件操作函数,用于管理文件系统中的文件。
4.1 检查文件是否存在
在进行文件操作之前,通常我们需要确认文件是否存在。可以使用 os.path
模块中的 exists()
函数来检查文件是否存在。
import os
if os.path.exists('example.txt'):
print('文件存在')
else:
print('文件不存在')
4.2 删除文件
要删除文件,可以使用 os.remove()
函数:
import os
if os.path.exists('example.txt'):
os.remove('example.txt')
print('文件已删除')
else:
print('文件不存在')
4.3 重命名文件
重命名文件可以使用 os.rename()
函数:
import os
os.rename('old_name.txt', 'new_name.txt')
print('文件已重命名')
4.4 获取文件信息
使用 os.stat()
可以获取文件的详细信息,包括文件大小、创建时间等。
import os
file_info = os.stat('example.txt')
print(f"文件大小: {file_info.st_size} 字节")
五、文件操作中的异常处理
在进行文件操作时,可能会遇到文件不存在、权限不足等错误。为确保程序在异常情况下不会崩溃,通常需要进行异常处理。
try:
with open('nonexistent_file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print('文件未找到,请检查文件名和路径。')
except PermissionError:
print('权限不足,无法访问文件。')
通过 try-except
语句,我们可以捕获文件操作中的常见异常并进行相应处理。
六、总结
在本文中,我们介绍了 Python 中文件的读取和写入方法,详细解释了文件模式、如何处理文本文件和二进制文件,并演示了各种常见的文件操作如追加内容、删除文件、重命名文件等。
通过掌握这些基本的文件操作技能,你可以轻松处理文件数据,无论是记录日志、保存用户数据,还是处理复杂的文件格式。在实际项目中,文件读写是非常常见的操作,理解这些操作的基本概念和应用场景能够帮助你编写更加健壮和灵活的 Python 程序。
标签:文件,读取,Python,写入,file,txt From: https://blog.csdn.net/chusheng1840/article/details/142465132