news 2026/5/1 11:12:24

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/5/1 9:59:27

R语言k折交叉验证实战解析:3步构建高鲁棒性预测模型

第一章:R语言k折交叉验证的核心概念什么是k折交叉验证 k折交叉验证(k-Fold Cross Validation)是一种评估机器学习模型性能的统计方法。其核心思想是将原始数据集随机划分为k个大小相等的子集,每次使用其中k-1个子集作为训练集&…

作者头像 李华
网站建设 2026/5/1 6:14:53

Obsidian Copilot 智能搜索:三步解锁高效笔记管理新时代

还在为海量笔记找不到关键信息而烦恼吗?Obsidian Copilot 的智能搜索功能将彻底改变你的笔记管理方式。无需建立复杂索引,通过语义理解技术,让你在数秒内精准定位任何相关笔记,实现真正的智能知识管理。 【免费下载链接】obsidian…

作者头像 李华
网站建设 2026/5/1 5:06:38

如何用ReadCat免费小说阅读器打造完美阅读体验?

如何用ReadCat免费小说阅读器打造完美阅读体验? 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 还在为广告弹窗打断阅读而烦恼吗?想要一款真正纯净、功能强大…

作者头像 李华
网站建设 2026/5/1 10:01:52

数字调音软件准确性测试方法论——面向乐器制造领域的测试实践

一、测试目标与行业特殊性 数字调音软件作为乐器制造的核心工具,其精度直接影响产品质量。测试需关注: 声学指标验证:频率响应误差≤0.1Hz(国际标准A440) 环境抗干扰:在30-90dB背景噪声下的识别稳定性 多…

作者头像 李华
网站建设 2026/5/1 5:05:24

终极指南:3分钟学会Silk音频格式转换

终极指南:3分钟学会Silk音频格式转换 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion support. 项目地址: https://…

作者头像 李华
网站建设 2026/5/1 7:23:28

2025零基础快速入门:5款免费3D建模软件完全操作指南

2025零基础快速入门:5款免费3D建模软件完全操作指南 【免费下载链接】Cura 3D printer / slicing GUI built on top of the Uranium framework 项目地址: https://gitcode.com/gh_mirrors/cu/Cura 想要在短时间内掌握3D建模的核心技能?现代免费建…

作者头像 李华