Python文件读写实战:从基础open到上下文管理器

温以宁
温以宁
发布时间:2026-10-15| 3人浏览过
原创

本文详解Python中文件读写的核心技巧。涵盖open函数的'r'、'w'、'x'、'a'等打开模式,对比read、readline与readlines的读取差异,以及write与writelines的写入区别。重点介绍使用finally和with语句管理文件句柄的最佳实践,避免资源泄露,提升代码简洁性与安全性。

前言:

Python文件基础操作与open模式

在Python编程中,操作文件的核心入口是内置的open函数。该函数接收文件名及打开模式作为参数,并返回一个文件对象。开发者通过操作这个文件对象来完成文件的读写任务,任务完成后,必须调用文件对象的close方法以释放资源。

新建opentest.py:

f = open('log.log')
print(f.read())
f.close()

输出:

2022-02-17 13:41:34,796:INFO:info 2022-02-17 13:41:34,797:WARNING:warning 2022-02-17 13:41:34,797:ERROR:error 2022-02-17 13:41:34,797:CRITICAL:critical

open函数默认以'r'模式打开文件,用户也可以显式指定其他打开模式。

'r' : 默认以读模式打开文件,如果文件不存在,抛出FileNotfoundError异常

'w' : 以写模式打开文件,如果文{牛非空,则文件已有的内容会被清空,如果文件不存在,则创建文件

'x' : 创建一个新的文件,如果文件已经存在,抛出FileExistsError异常

'a' : 在文件末尾追加文件

f = open('log.log','w')
f.write('hello')
f.close()

log.log文件内容

hello

f = open('log.log','a')
f.write('world')
f.close()

log.log文件内容

helloworld

文件句柄管理与资源释放

在计算机程序中,每打开一个文件就需要占用一个文件句柄,而一个进程拥有的文件句柄数是有限的。此外,文件句柄也会占用操作系统的资源,因此,在编写程序处理文件时需要注意,文件处理结束后及时关闭文件。文件句柄泄露或许是最常见的资源泄露问题,也是工程师最容易犯的错误。为了避免打开文件后没有及时关闭,大多数编程语言中都使用finally关闭文件句柄。在 Python中,也可以使用finally语句来保证,无论在什么情况下文件都会被关闭。

try:
    f = open('log.log','a')
    f.write('world')
finally:
    f.close()

Python中还有更加简洁优美的写法,即使用上下文管理器

with open('log.log') as f:
    print(f.read())

可以看到,使用上下文管理器以后代码行数变少了。在Python中,如果想把代码写得简洁优美,就应该在保证可读性的前提下代码行数越少越好。

文件读取方法详解

Python提供了三个读相关的函数,分别是read、readline readlines ,它们的作用如下:

  • 1、read:读取文件中的所有内容;
  • 2、readline:一次读取一行;
  • 3、readlines:将文件内容存到一个列表中,列表中的每一行对应于文件中的一行。
with open('log.log') as f:
    print(f.read())
    f.seek(0) #文件读取偏移量到开头
    print(f.readline())
    f.seek(0)
    print(f.readlines())

输出:

2022-02-17 13:41:34,796:INFO:info 2022-02-17 13:41:34,797:WARNING:warning 2022-02-17 13:41:34,797:ERROR:error 2022-02-17 13:41:34,797:CRITICAL:critical 2022-02-17 13:41:34,796:INFO:info

['2022-02-17 13:41:34,796:INFO:info\n', '2022-02-17 13:41:34,797:WARNING:warning\n', '2022-02-17 13:41:34,797:ERROR:error\n', '2022-02-17 13:41:34,797:CRITICAL:critical']

文件写入方法与行处理

Python提供了两个写函数,分别是write和writelines,它们的区别如下:

  • 1、write:写字符串到文件中,并返回写入的字符数
  • 2、writelines:写一个字符串列表到文件中。
with open('log.log','w') as f:
    f.write('hello')
    f.writelines(['\njohn is good man','\nsan is bad man'])

log.log内容

hello
john is good man
san is bad man

以行为单位依次处理文件中的每一行。

with open('log.log') as f:
    for line in f:
        print(line,end="")

到此这篇关于python使用技巧-文件读写的文章就介绍到这了,更多相关python文件读写内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。