news 2026/6/23 21:23:31

Python文件操作与异常处理:编写健壮的程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python文件操作与异常处理:编写健壮的程序

文章目录

前言

一、文件的概念

1、什么是文件

2、文件操作的作用

二、文件的基本操作

1、打开文件

2、读取文件内容

3、write函数写入文件

4、关闭文件

5、入门级案例

三、上下文管理器:更优雅的文件操作

四、Python异常处理机制

1、基本语法

2.文件操作中常见的异常

五、文件操作与异常处理的结合

1.安全的文件读取

2.安全的文件写入

总结


前言

在日常编程中,文件操作是每个开发者都必须掌握的基本技能。无论是读取配置文件、处理日志文件,还是保存用户数据,文件操作无处不在。然而,文件操作也是程序出错的高发区——文件可能不存在、权限不足、磁盘空间不够等问题时常发生。Python通过强大的异常处理机制,让我们能够优雅地处理这些错误,编写出更加健壮的程序。


一、文件的概念

1、什么是文件

内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别

2、文件操作的作用

文件操作的作用就是把⼀些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

二、文件的基本操作

1、打开文件

Python使用open()函数打开文件,它返回一个文件对象:

file = open('example.txt', 'r', encoding='utf-8')

常用模式:

  • 'r':只读模式(默认)

  • 'w':写入模式(覆盖原有内容)

  • 'a':追加模式

  • 'x':独占创建模式(文件存在则失败)

  • 'b':二进制模式(如'rb''wb'

  • 't':文本模式(默认)

  • '+':读写模式(如'r+''w+'

2、读取文件内容

Python提供了多种读取文件的方法:

# 读取整个文件 content = file.read() # 逐行读取 line = file.readline() # 读取所有行并返回列表 lines = file.readlines() # 使用迭代器逐行读取(内存友好) for line in file: print(line.strip())

3、write函数写入文件

基本语法:

file.write('要写⼊的内容,要求是⼀个字符串类型的数据')

4、关闭文件

关闭文件是一个好习惯,可以释放系统资源:

file.close()

5、入门级案例

# 1、打开⽂件 f = open('python.txt', 'w') # 2、写⼊内容 f.write('⼈⽣苦短,我学Python!') # 3、关闭⽂件 f.close()

三、上下文管理器:更优雅的文件操作

Python的with语句提供了上下文管理功能,可以自动管理资源的打开和关闭:

# 使用with语句自动管理文件 with open('example.txt', 'r', encoding='utf-8') as file: content = file.read() # 文件会在代码块结束后自动关闭

四、Python异常处理机制

1、基本语法

try: # 尝试执行的代码 result = 10 / 0 except ZeroDivisionError: # 处理特定异常 print("不能除以零!") except (TypeError, ValueError) as e: # 处理多个异常 print(f"类型或值错误: {e}") except Exception as e: # 处理所有其他异常 print(f"发生未知错误: {e}") else: # 如果没有异常发生 print("操作成功!") finally: # 无论是否发生异常都会执行 print("清理工作完成")

2.文件操作中常见的异常

  • FileNotFoundError:文件不存在

  • PermissionError:权限不足

  • IsADirectoryError:尝试打开目录而非文件

  • UnicodeDecodeError:编码问题

  • IOError:输入输出错误

五、文件操作与异常处理的结合

1.安全的文件读取

def read_file_safely(filename): """安全读取文件,处理可能出现的异常""" try: with open(filename, 'r', encoding='utf-8') as file: return file.read() except FileNotFoundError: print(f"错误:文件 '{filename}' 不存在") return None except PermissionError: print(f"错误:没有权限读取文件 '{filename}'") return None except UnicodeDecodeError: print(f"错误:文件 '{filename}' 编码问题") return None except Exception as e: print(f"读取文件时发生未知错误: {e}") return None # 使用示例 content = read_file_safely("data.txt") if content: print("文件内容:", content[:100])

2.安全的文件写入

def write_to_file_safely(filename, content, mode='w'): """安全写入文件,处理可能出现的异常""" try: with open(filename, mode, encoding='utf-8') as file: file.write(content) print(f"成功写入文件: {filename}") return True except PermissionError: print(f"错误:没有权限写入文件 '{filename}'") return False except IsADirectoryError: print(f"错误:'{filename}' 是一个目录") return False except IOError as e: print(f"写入文件时发生I/O错误: {e}") return False except Exception as e: print(f"写入文件时发生未知错误: {e}") return False # 使用示例 success = write_to_file_safely("output.txt", "这是要保存的内容") if success: print("文件保存成功")

总结

文件操作和异常处理是Python编程中不可或缺的部分。通过合理使用Python提供的工具和模式,我们可以编写出既健壮又易于维护的代码。良好的错误处理不仅能防止程序崩溃,还能提供更好的用户体验,帮助快速定位和解决问题。

在实际开发中,根据具体需求选择合适的文件操作方式和异常处理策略,将使你的程序更加可靠和专业。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 18:17:42

RocketMQ如何防止消息丢失?

文章目录引言生产端:确保消息成功发出去存储端(Broker):确保消息持久化且不丢失消费端:确保消息处理完再确认总结引言 大家好!我们使用消息队列中间件的时候,一般都会涉及到消息丢失怎么兜底的问题。今天我们一起来探…

作者头像 李华
网站建设 2026/6/23 16:03:16

CSS尺寸、盒子模型、定位、浮动与布局(Flex/Grid)

尺寸单位: px,em,rem,frimg各单位定义px (像素): 相对固定的单位,代表屏幕上的一个物理点。在高分辨率屏幕上,1个CSS像素可能对应多个物理像素。em: 相对单位,相对于父元素的字体大小。如果父元素字体大小为16px,则1em 16px。rem…

作者头像 李华
网站建设 2026/6/23 11:21:12

《构建游戏实时流失预警模型的核心逻辑》

玩家流失预警的关键痛点从来不是捕捉显性的行为衰减,而是解码藏在时序流转里的隐性流失信号—那些散落在跨模块交互、行为节奏变化中的序列异动,往往比单纯的在线时长缩短、任务参与度下降更早暴露玩家的离开倾向,也是实时预警模型能否实现“提前干预、精准留客”的核心突破…

作者头像 李华
网站建设 2026/6/23 19:52:29

两个步骤,打包war,tomcat使用war包

资源代码: https://download.csdn.net/download/hashiqimiya/92455258 如上 了解资源代码: 写了一个controller代码,控制接口对应该运行的函数。 package org.example.testproducttomcatwar;import org.springframework.web.bind.annotat…

作者头像 李华
网站建设 2026/6/23 14:19:12

idea修改maven的刷新引入依赖快捷键

在 IntelliJ IDEA 里,Load Maven Changes 对应的是当你修改 pom.xml 或者依赖后,手动刷新 Maven 项目的操作。你也可以给它自定义快捷键。具体步骤如下:1. 打开快捷键设置Windows/Linux: File → Settings → KeymapmacOS: IntelliJ IDEA → …

作者头像 李华
网站建设 2026/6/23 19:51:17

纯电动汽车Simulink仿真模型建模详细步骤。 通过文档的形式,跟着文档一步一步操作,既可以...

纯电动汽车Simulink仿真模型建模详细步骤。 通过文档的形式,跟着文档一步一步操作,既可以提高自己的建模能力,又可以对整个建模思路进行借鉴,形成设计能力。 附带模型。纯电动汽车仿真模型在Simulink里搭建就像搭乐高——找准核心…

作者头像 李华