Python文件操作指南:open、读写模式与with语句详解

桃夭
桃夭
发布时间:2026-10-16 | 3人浏览过
原创

本文详细介绍Python中文件操作的核心方法。涵盖open函数的基本用法及常见读写模式(r, w, a等)和二进制模式;讲解read、readline、readlines的区别;演示覆盖写入与追加写入的代码实现;分析未关闭文件导致的读取问题;最后通过try...finally和with语句优化代码,确保文件资源安全释放。

前言

在Python中,我们可以利用内置函数对计算机文件进行读写操作,这属于常见的I/O(输入/输出)操作范畴。本文将简要介绍相关基础知识。

1. open()函数

Python提供了内置的open()函数用于打开文件,该函数返回一个文件对象,随后可对文件进行各种处理。

open()函数的标准调用格式如下:

open(file, mode='r')

第一个参数指定待打开文件的路径,第二个参数指定文件打开模式,例如'r'代表读取模式,'w'代表写入模式。

文件读写支持多种常见模式,具体如下:

默认情况下,文件以文本模式打开。若需以二进制模式打开,可在对应模式后添加'b',例如rb、wb、ab、rb+、wb+、ab+等。

此外,该函数还支持encoding、errors等可选参数,此处不再赘述。

2. 读文件

读取文件的基本流程包括:打开文件、读取数据、关闭文件。我们可以手动创建一个文本文件并写入若干行内容,

接着通过代码实现文件读取:

f = open("D:\\test1.txt", "r")  # 以 r 模式打开文件
data = f.read()  # 读文件
f.close()  # 关闭文件

在上述代码中,调用read()方法可一次性读取文件全部内容,并将其存储为字符串(返回str类型对象)。读取文件数据时,常用的三个函数为read()、readline()和readlines(),

它们的具体区别如下:

文件使用完毕后,由于文件对象会占用操作系统资源,因此必须调用close()方法来关闭文件。

3. 写文件

写入文件的基本流程包括:打开文件、写入数据、关闭文件。写入时分为覆盖写入和追加写入两种情况。覆盖写入使用模式'w',其作用相当于先删除原文件内容再重新写入。

f = open("D:\\test2.txt", "w")
f.write("hello world 1\n")
f.write("hello world 2\n")
f.close()

执行上述代码后,文件内容变为3行(包含末尾换行符):

hello world 1 hello world 2

追加写入使用模式'a',它不会删除原有内容,而是直接在文件末尾追加新内容。

f = open("D:\\test2.txt", "w")
f.write("hello world 3\n")
f.write("hello world 4\n")
f.close()

f = open("D:\\test2.txt", "a")
f.write("hello world 5\n")
f.write("hello world 6\n")
f.close()

执行上述代码后,文件内容变为5行(包含末尾换行符):

hello world 3 hello world 4 hello world 5 hello world 6

写入文件结束后,同样需要调用close()关闭文件。如果先执行写操作却忘记关闭文件,随后立即对该文件执行读操作,最终读取结果会是什么?

f1 = open("D:\\test3.txt", "w")
f1.write("hello world 1\n")
f1.write("hello world 2\n")
# f1.close()

f2 = open("D:\\test3.txt", "r")
data = f2.read()
f2.close()

print(data)

执行上述代码后,控制台不会输出任何内容,这表明在文件未正确关闭的情况下,无法读取到预期内容。

4. 通过 with 来读写文件

在文件读写过程中,可能会忘记调用close(),或在close()之前发生报错(导致后续代码无法执行)。为了优化代码,确保无论是否发生异常都能执行close(),可以使用try...finally结构:

try:
    f = open("D:\\test3.txt", "w")
    f.read()  # w模式下没有read(),会导致报错
finally:
    print(f.closed)  # 检查文件是否关闭,返回 False
    f.close()
    print(f.closed)  # 检查文件是否关闭,返回 True

虽然try...finally能解决问题,但每次操作文件都这样编写显得繁琐。因此,推荐使用with语句来读写文件。

with open("D:\\test3.txt", "w") as f1:
    f1.write("hello world 1\n")
    f1.write("hello world 2\n")

with open("D:\\test3.txt", "r") as f2:
    data = f2.read()
    print(data)

使用with语句的优势在于,当with块内的语句执行完毕后,无论是否发生异常,都会自动关闭打开的文件。这样无需手动执行close(),使代码更加简洁。

至此,关于Python文件操作的介绍到此结束。如需了解更多Python文件操作相关内容,请搜索本站历史文章或继续浏览后续文章,感谢支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表