Python文件和异常处理小结

 更新时间:2025年03月05日 09:33:09   作者:Alfadi联盟 萧瑶  
本章详细介绍了Python中的文件操作和异常处理,包括文件的读取和写入、异常的捕获和处理,以及JSON数据的存储和重构代码的最佳实践,通过示例和解释,帮助读者掌握这些关键技能,感兴趣的朋友一起看看吧

文件和异常处理是Python编程中不可或缺的技能。本章将带你从基础到进阶,彻底掌握文件操作和异常处理的核心知识点,并通过通俗易懂的示例帮助所有人理解。

10.1 从文件中读取数据

10.1.1 读取整个文件

要读取文件内容,首先需要打开文件,使用 open() 函数并指定文件路径和模式(如 'r' 表示只读)。例如:

with open('pi_digits.txt', 'r') as file:
    contents = file.read()
print(contents)

使用 with 语句可以自动关闭文件,避免资源泄露。file.read() 会一次性读取文件全部内容。

10.1.2 文件路径

- 相对路径:相对于当前脚本的位置,如 data/pi.txt。

- 绝对路径:完整的系统路径,如 /home/user/documents/pi.txt。

在Windows中注意反斜杠转义(C:\\path\\to\\file)或使用原始字符串(r'C:\path\to\file'`。

10.1.4 逐行读取与列表存储

若想逐行处理文件内容,可以使用循环:

with open('pi_digits.txt') as file:
    lines = file.readlines()  # 将各行存入列表
for line in lines:
    print(line.strip())       # 去除每行末尾的换行符

10.1.6 处理百万行大文件

直接读取大文件可能导致内存不足。此时可逐行处理:

with open('big_file.txt') as file:
    for line in file:
        process(line)  # 每次处理一行,内存友好

10.2 写入文件

10.2.1 写入空文件

使用 'w' 模式打开文件,若文件不存在则会创建:

with open('output.txt', 'w') as file:
    file.write("Hello, World!")

⚠️ 注意:'w' 模式会覆盖原有内容!

10.2.3 追加内容

用 'a' 模式追加内容到文件末尾:

with open('output.txt', 'a') as file:
    file.write("\nAppended line.")

10.3 异常处理:让程序更健壮

10.3.1 处理 ZeroDivisionError

当除数为零时,程序会崩溃。通过 try-except 捕获异常:

with open('output.txt', 'a') as file:
    file.write("\nAppended line.")

10.3.5 处理 FileNotFoundError

读取不存在的文件时抛出此异常:

filename = 'missing.txt'
try:
    with open(filename) as file:
        content = file.read()
except FileNotFoundError:
    print(f"文件 {filename} 不存在!")

10.3.6 静默失败

若想忽略某些异常,可用 pass:

try:
    # 可能出错的代码
except FileNotFoundError:
    pass  # 静默处理

10.4 存储数据:JSON的妙用

10.4.1 使用 json.dump() 和 json.load()

将数据保存为JSON格式:

import json
data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(data, file)  # 写入文件
# 读取JSON数据
with open('data.json') as file:
    loaded_data = json.load(file)
print(loaded_data['name'])  # 输出:Alice

10.4.2 重构代码

将功能拆分为独立函数,提升可维护性:

def save_user_data(username):
    """保存用户数据到JSON文件"""
    with open('users.json', 'w') as file:
        json.dump({'username': username}, file)

10.5 小结与最佳实践

- 文件操作:优先使用 with 语句,避免忘记关闭文件。

- 异常处理:精准捕获特定异常(如 FileNotFoundError),避免笼统的 except。

- 数据存储:JSON适合存储结构化数据,且跨平台兼容。

- 代码风格:添加清晰的注释,拆分复杂操作为函数。

通过本章学习,你将能够优雅地处理文件读写、从容应对程序错误,并掌握数据持久化的核心技巧。现在,动手写一段代码试试吧!

到此这篇关于Python文件和异常详解的文章就介绍到这了,更多相关Python文件和异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • DataFrame.groupby()所见的各种用法详解

    DataFrame.groupby()所见的各种用法详解

    这篇文章主要介绍了DataFrame.groupby()所见的各种用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Python实现遍历指定路径下的所有JSON文件

    Python实现遍历指定路径下的所有JSON文件

    这篇文章主要为大家详细介绍了如何使用Python的os和json模块遍历指定路径下的所有JSON文件,包括文件检查、读取、解析及错误处理过程,感兴趣的小伙伴可以了解下
    2026-03-03
  • 如何彻底解决python NameError:name '__file__' is not defined

    如何彻底解决python NameError:name '__file__' is not 

    这篇文章主要给大家介绍了关于如何彻底解决python NameError:name '__file__' is not defined的相关资料,文中通过图文将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • python中reader的next用法

    python中reader的next用法

    这篇文章主要介绍了python中reader的next用法,分别介绍了python3中的用法和python2中的用法,具体实例代码大家参考下本文
    2018-07-07
  • 解决python3爬虫无法显示中文的问题

    解决python3爬虫无法显示中文的问题

    下面小编就为大家分享一篇解决python3爬虫无法显示中文的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Pycharm安装第三方库并更换镜像的详细教程

    Pycharm安装第三方库并更换镜像的详细教程

    在使用pycharm学习python的时候,经常需要第三方库,没有第三方库程序就会报错,pycharm也会提醒你要安装所需要的库,下面这篇文章主要给大家介绍了关于Pycharm安装第三方库并更换镜像的详细教程,需要的朋友可以参考下
    2023-05-05
  • 关于flask路由app.route及路由参数的各种用法解析

    关于flask路由app.route及路由参数的各种用法解析

    我们在开发过程中,编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类,这个类一般就是路由类,简称路由,这篇文章主要介绍了有关flask路由app.route及路由参数的各种用法解析,需要的朋友可以参考下
    2024-03-03
  • 关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)

    关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)

    这篇文章主要介绍了python3 opencv 图像二值化cv2.adaptiveThreshold函数的相关知识,结合示例代码介绍了adaptiveThreshold方法的用法,需要的朋友可以参考下
    2022-04-04
  • python中的编码知识整理汇总

    python中的编码知识整理汇总

    这篇文章主要介绍了python中的编码知识整理汇总的相关资料,需要的朋友可以参考下
    2016-01-01
  • Python实现直方图均衡基本原理解析

    Python实现直方图均衡基本原理解析

    这篇文章主要介绍了Python实现直方图均衡基本原理,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-08-08

最新评论