Python中使用with同时打开多个文件的正确写法

顾言
顾言
发布时间:2026-10-13| 4人浏览过
原创

本文介绍在Python中如何使用with语句同时打开多个文件。通过对比嵌套写法、逗号分隔写法以及contextlib.nested方法,详细解析了不同实现方式的优劣。重点强调了在Python 3中推荐使用的逗号分隔多文件打开方式,并指出Python 2中nested函数的使用限制,帮助开发者写出更简洁、安全的文件处理代码。

虽然最初接触的是Java,但近期对Python的喜爱日益加深,因此决定深入探究Python的原理与架构。鉴于理解能力有限,只能通过记录学习过程来逐步提升。

使用with语句打开文件的好处众所周知,本文主要记录如何编写简洁代码以同时打开多个文件。

场景设定为同时打开三个文件,且文件行数相同,程序需依次读取每个文件的一行并同时输出。首先介绍一种较为直观的嵌套写法,如下所示:

with open('file1') as f1:
 with open('file2') as f2:
  with open('file3') as f3:
   for i in f1:
    j = f2.readline()
    k = f3.readline()
    print(i,j,k)

需要注意的是,此处只能对其中一个文件进行for循环读取,不能写成如下错误形式:

for i,j,k in f1,f2,f3:
 print(i,j,k)

过多的缩进层级显得繁琐,下面介绍一种更简洁的写法:

with open('file1') as f1, open('file2') as f2, open('file3') as f3:
 for i in f1:
  j = f2.readline()
  k = f3.readline()
  print(i,j,k)

此外,还有一种更为优雅的实现方式:

from contextlib import nested #这个包是python2中的,不使用python3
with nested(open('file1'), open('file2'), open('file3')) as (f1,f2,f3):
 for i in f1:
  j = f2.readline()
  k = f3.readline()
  print(i,j,k) 

以上关于在Python中使用with打开多个文件的方法即为分享的全部内容,希望能对读者有所帮助,也欢迎大家继续支持本站。

相关标签:

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

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 算法库。