Python的秘密基地--[章节5] 文件与异常处理

第5章:文件与异常处理

在编程中,文件操作和异常处理是必不可少的部分。Python提供了强大的文件操作功能,并且能够方便地处理运行时错误。掌握这两部分可以让你编写更加健壮和高效的代码。


5.1 文件操作

5.1.1 打开文件

Python提供了内置的open()函数用于打开文件,返回一个文件对象。

# 打开文件
file = open('example.txt', 'r')  # 'r'表示读取模式
print(file.read())  # 读取文件内容
file.close()  # 关闭文件
5.1.2 文件模式
模式描述
'r'只读模式(默认模式)
'w'写入模式(如果文件存在会被覆盖)
'a'追加模式(在文件末尾追加内容)
'b'二进制模式(用于处理非文本文件)
'x'创建模式(文件不存在时创建文件)
't'文本模式(默认模式)
# 示例:写入文件
file = open('example.txt', 'w')  # 打开文件以写入
file.write("Hello, Python!")  # 写入内容
file.close()
5.1.3 文件读取方法
  • read(size):读取指定大小的字符。
  • readline():读取一行内容。
  • readlines():读取所有行并返回一个列表。
# 读取文件
file = open('example.txt', 'r')
print(file.read())  # 读取所有内容
file.close()

# 逐行读取
file = open('example.txt', 'r')
print(file.readline())  # 读取一行
file.close()

5.2 上下文管理器与with语句

使用with语句可以自动管理文件的打开和关闭,避免忘记关闭文件导致资源泄漏。

# 使用with自动关闭文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
# 不需要显式调用file.close()

with语句可以确保无论代码执行是否成功,都会自动关闭文件。


5.3 文件操作的常见方法

5.3.1 os模块中的文件操作

os模块提供了与操作系统相关的功能,可以用来处理文件和目录。

import os

# 获取当前工作目录
print(os.getcwd())  # 获取当前目录

# 创建目录
os.mkdir('new_folder')

# 删除文件
os.remove('example.txt')
5.3.2 Pathlib模块

pathlib模块提供了面向对象的文件系统路径操作方式。

from pathlib import Path

# 创建路径对象
path = Path('example.txt')

# 判断文件是否存在
if path.exists():
    print("文件存在")
else:
    print("文件不存在")

# 读取文件内容
content = path.read_text()
print(content)

5.4 异常处理

5.4.1 什么是异常

异常是程序执行过程中遇到的错误。Python通过try-except语句来处理异常。

try:
    x = 1 / 0  # 除以零会引发异常
except ZeroDivisionError as e:
    print(f"发生异常:{e}")
5.4.2 异常处理流程
  1. try:尝试执行可能引发异常的代码。
  2. except:捕获异常并进行处理。
  3. else:如果没有异常发生,执行此部分代码。
  4. finally:无论是否发生异常,都会执行此部分代码(通常用于清理操作)。
try:
    x = int(input("请输入一个整数:"))
    print(10 / x)
except ZeroDivisionError:
    print("不能除以零")
except ValueError:
    print("请输入有效的整数")
else:
    print("没有异常发生")
finally:
    print("无论如何都会执行的部分")
5.4.3 多个异常捕获

可以捕获多个不同类型的异常。

try:
    x = int(input("请输入一个整数:"))
    result = 10 / x
except (ZeroDivisionError, ValueError) as e:
    print(f"发生异常:{e}")

5.5 自定义异常

你可以创建自己的异常类,继承自内置的Exception类。

class MyCustomError(Exception):
    def __init__(self, message):
        super().__init__(message)

try:
    raise MyCustomError("这是一个自定义异常")
except MyCustomError as e:
    print(f"捕获到自定义异常: {e}")

5.6 捕获所有异常

虽然通常不建议捕获所有异常,但如果需要,可以使用except Exception捕获所有类型的异常。

try:
    x = 10 / 0
except Exception as e:
    print(f"捕获到异常:{e}")

5.7 调试与日志

5.7.1 使用logging模块

logging模块提供了记录程序运行时事件的功能,特别适用于捕获和记录错误信息。

import logging

# 配置日志
logging.basicConfig(level=logging.INFO)

# 日志记录
logging.debug("调试信息")
logging.info("普通信息")
logging.warning("警告信息")
logging.error("错误信息")
logging.critical("严重错误")

小结

这一章介绍了Python的文件操作方法、异常处理机制以及如何使用logging模块进行日志记录。通过掌握文件和异常处理,你可以编写更加健壮、易于维护的Python程序。

下一章将讨论更为进阶的内容——Python中的高级特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上有潜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值