news 2026/4/22 20:55:02

Python基础 使用with结构打开多个文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python基础 使用with结构打开多个文件

使用 with 结构打开多个文件的两种核心方式

with 语句的核心优势是自动管理文件资源—— 无论代码执行是否抛出异常,都会确保文件被正确关闭,这是比手动open()+close()更优的实践。打开多个文件主要有两种常用方式,可根据场景选择:

方式 1:逗号分隔(推荐,简洁高效)

适合打开文件数量少、操作逻辑简单的场景,语法简洁,一行即可声明多个文件句柄。

基础语法

python

with open(文件路径1, 模式, encoding="utf-8") as f1, open(文件路径2, 模式, encoding="utf-8") as f2: # 对f1、f2的操作代码

实战示例 1:同时读取两个文件

python

# 读取file1.txt和file2.txt的内容并打印 try: with open("file1.txt", "r", encoding="utf-8") as f1, open("file2.txt", "r", encoding="utf-8") as f2: # 读取文件1的全部内容 content1 = f1.read() print("【file1.txt 内容】") print(content1) # 读取文件2的全部内容 content2 = f2.read() print("\n【file2.txt 内容】") print(content2) except FileNotFoundError: print("错误:指定的文件不存在,请检查文件路径!") except UnicodeDecodeError: print("错误:文件编码不匹配,建议确认文件编码(如gbk)!")

实战示例 2:读取一个文件并写入另一个文件(文件复制)

python

# 将file1.txt的内容复制到file2.txt try: with open("file1.txt", "r", encoding="utf-8") as f_read, open("file2.txt", "w", encoding="utf-8") as f_write: # 读取源文件内容 content = f_read.read() # 写入目标文件(若file2.txt不存在则创建,存在则覆盖) f_write.write(content) print("文件复制完成!") except Exception as e: print(f"操作出错:{e}")
方式 2:嵌套 with 语句(逻辑清晰)

适合打开文件数量多、每个文件操作逻辑独立的场景,可读性更强,便于分步处理。

实战示例:嵌套操作 3 个文件

python

# 嵌套with:读取file1 → 写入file2 → 追加到file3 try: with open("file1.txt", "r", encoding="utf-8") as f1: content1 = f1.read() print("读取file1完成:", content1[:50], "...") # 只打印前50个字符 with open("file2.txt", "w", encoding="utf-8") as f2: f2.write(content1) print("写入file2完成") with open("file3.txt", "a", encoding="utf-8") as f3: f3.write(f"\n【追加内容】{content1[:20]}") print("追加到file3完成") except Exception as e: print(f"出错原因:{e}")

关键说明

  1. 文件模式选择
    • r:只读(默认),必须确保文件存在;
    • w:写入(覆盖原有内容),文件不存在则创建;
    • a:追加(在文件末尾写),文件不存在则创建;
    • r+:读写,需谨慎使用避免误写。
  2. 编码指定:务必添加encoding="utf-8",避免中文乱码(Windows/Linux 通用)。
  3. 异常处理:包裹try-except可捕获文件不存在、权限不足、编码错误等常见问题,避免程序崩溃。

总结

  1. with 结构打开多个文件有两种核心方式:逗号分隔(简洁)适合简单场景,嵌套 with(清晰)适合复杂逻辑。
  2. with 语句会自动调用文件的close()方法,无需手动关闭,是文件操作的最佳实践。
  3. 操作文件时必须指定编码(如 utf-8)并添加异常处理,这是避免中文乱码和程序崩溃的关键。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 20:24:16

Obsidian Copilot:颠覆传统搜索的AI驱动笔记智能检索工具

在信息爆炸的时代,你是否曾为在数千个笔记中找不到关键内容而苦恼?传统搜索工具只能匹配关键词,却无法理解你的真实需求。Obsidian Copilot作为一款革命性的AI驱动笔记搜索工具,正在重新定义知识管理的边界。这款智能助手通过先进…

作者头像 李华
网站建设 2026/4/18 9:41:43

天使轮融资展示亮点:IndexTTS 2.0助力产品快速原型验证

天使轮融资展示亮点:IndexTTS 2.0助力产品快速原型验证 在AI驱动内容创作的今天,一个创业团队能否在天使轮阶段打动投资人,往往不在于PPT讲得多漂亮,而在于——能不能拿出一个“会说话”的原型。 尤其是在虚拟主播、互动叙事、短视…

作者头像 李华
网站建设 2026/4/22 2:08:22

Zephyr对TSN的支持现状与前景:图解说明

Zephyr遇上TSN:如何让MCU跑出“确定性”通信? 工业现场的工程师们常常面临一个尴尬局面:控制器明明算得飞快,指令却卡在了网络上。传感器数据延迟几毫秒,机械臂动作就可能失之毫厘、差之千里。传统以太网的“尽力而为…

作者头像 李华
网站建设 2026/4/20 16:23:55

Diablo II智能自动化革命:重新定义游戏效率体验

还在为重复的刷怪流程而疲惫吗?想要解放双手,让暗黑破坏神II的游戏体验更加高效吗?今天我们将深入探索一款革命性的自动化工具——Botty,它通过先进的计算机视觉技术和智能路径规划,彻底改变了传统游戏方式。 【免费下…

作者头像 李华
网站建设 2026/4/21 18:44:56

如何快速掌握硬件伪装技术:EASY-HWID-SPOOFER完整实战指南

如何快速掌握硬件伪装技术:EASY-HWID-SPOOFER完整实战指南 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER EASY-HWID-SPOOFER是一款基于Windows内核模式的硬件信息动态…

作者头像 李华
网站建设 2026/4/19 23:23:20

AutoGPT集成语音模块:让AI自主决策并‘说出来’

AutoGPT集成语音模块:让AI自主决策并“说出来” 在内容创作日益自动化的今天,一个关键瓶颈逐渐浮现:AI虽然能“思考”、会“写作”,却始终“沉默”。无论是短视频脚本生成、虚拟主播互动,还是智能客服应答,…

作者头像 李华