news 2026/4/18 4:53:01

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/4/16 23:00:02

06_C 语言进阶之避坑指南:字符串与 char 指针 —— 从内存本质避开那些致命陷阱

C 语言进阶之避坑指南:字符串与 char 指针 —— 从内存本质避开那些致命陷阱 一、字符串与 char 指针的 “坑”,你踩过吗? “char 指针赋值后打印出现乱码,甚至程序直接崩溃?” “字符串拷贝时少加一个 \0,导致后续数据被污染?” “用 char * 指向字符串常量,试图修…

作者头像 李华
网站建设 2026/4/9 14:14:35

Jira + DeepSeek 全流程:需求创建到任务分配的智能话术生成实战指南

Jira DeepSeek 全流程:需求创建到任务分配的智能话术生成实战指南引言:项目管理中的沟通痛点与智能化机遇在现代软件开发与项目管理中,效率与精准度是成功的关键。然而,从最初的模糊需求到最终清晰可执行的任务分配,这…

作者头像 李华
网站建设 2026/3/4 0:29:29

Kubernetes 可观测性体系构建指南:从传统监控到云原生生产级实践

Kubernetes 可观测性体系构建指南:从传统监控到云原生生产级实践 在 Kubernetes 环境中,“看不见”往往比“故障本身”更危险。 Pod 的短暂生命周期、服务的高频变更、以及跨多层组件的问题传播,使得传统以“主机 + 静态指标”为中心的监控模式迅速失效。 要构建一套真正有…

作者头像 李华
网站建设 2026/4/18 2:05:15

YashanDB数据库的分区表设计技巧与性能提升方法.

在设计 YashanDB 或其他数据库的分区表时,合理的设计方案能够显著提升数据库的性能和管理效率。以下是一些分区表设计技巧和性能提升方法:1. 分区策略选择- 范围分区(Range Partitioning): 根据某个字段的范围(如日期&…

作者头像 李华
网站建设 2026/4/18 3:53:02

面试手撕排序

手撕排序 (写的时候别忘了关提示,很多时候负面,给我错的代码还分心自己) (小心别敲错一些变量,算法对了但是结果有问题,顺着逻辑梳理,看变量敲没敲错) 冒泡排序 原理&…

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

SolidWorks工程图用途及深入介绍

在机械结构设计中,工程图是将三维设计意图转化为二维技术语言的核心载体,是连接设计、制造、检验、维护等环节的“技术契约”。SolidWorks作为主流的三维CAD软件,其工程图模块深度集成了参数化建模与二维出图能力,既保留了传统工程…

作者头像 李华