网站首页 > 精选文章 正文
以下是Python进阶第3天学习任务的示例代码,包含try-except-else-finally的完整用法、调试技巧说明,并实现一个文件读取程序来处理各种异常情况。我会在代码中添加详细的注释,帮助理解每部分的功能。
python
# 示例代码:文件读取程序,处理各种异常情况
# 导入必要的模块
import os # 用于文件路径操作
def read_file(file_path):
"""
读取文件内容并处理可能出现的异常
参数:
file_path (str): 文件路径
返回:
str: 文件内容(如果成功读取)
"""
file_handle = None # 文件句柄初始化
try:
# 尝试打开并读取文件
file_handle = open(file_path, 'r', encoding='utf-8') # 使用utf-8编码打开文件
content = file_handle.read() # 读取文件内容
if not content:
raise ValueError("文件内容为空") # 自定义异常:如果文件为空则抛出
except FileNotFoundError as e:
# 处理文件不存在的异常
print(f"错误:文件 '{file_path}' 不存在。详细信息:{e}")
return None
except PermissionError as e:
# 处理权限不足的异常
print(f"错误:无权限访问文件 '{file_path}'。详细信息:{e}")
return None
except UnicodeDecodeError as e:
# 处理文件编码错误的异常
print(f"错误:文件 '{file_path}' 编码错误,无法读取。详细信息:{e}")
return None
except ValueError as e:
# 处理自定义异常(文件为空)
print(f"错误:{e}")
return None
except Exception as e:
# 处理其他未预料到的异常
print(f"未知错误:{e}")
return None
else:
# 如果没有异常发生,执行此块
print("文件读取成功!")
return content
finally:
# 无论是否发生异常,此块都会执行
if file_handle is not None:
file_handle.close() # 确保文件句柄被关闭
print(f"文件 '{file_path}' 已关闭。")
# 测试函数
def main():
# 测试用例1:正常文件
print("\n测试1:读取正常文件")
result = read_file("test.txt") # 假设test.txt存在且有内容
if result:
print(f"文件内容:{result}")
# 测试用例2:不存在的文件
print("\n测试2:读取不存在的文件")
read_file("non_existent_file.txt")
# 测试用例3:空文件
print("\n测试3:读取空文件")
with open("empty.txt", "w") as f: # 创建一个空文件
pass # 不写入任何内容
read_file("empty.txt")
# 调试示例:使用pdb进行调试
if __name__ == "__main__":
# 如果需要调试,可以取消注释以下代码
# import pdb
# pdb.set_trace() # 设置断点,运行时进入调试模式
main()
"""
调试技巧说明:
1. 使用pdb:
- 在代码中插入 `import pdb; pdb.set_trace()` 设置断点
- 运行程序后,使用命令:
- n (next): 单步执行下一行
- s (step): 进入函数内部
- c (continue): 继续运行直到下一个断点
- p 变量名: 查看变量值
- q (quit): 退出调试
2. 使用IDE(如PyCharm、VSCode):
- 设置断点:点击代码行左侧添加红点
- 运行调试模式:F5(启动)、F10(步过)、F11(步入)
- 查看变量:调试窗口会显示当前作用域内的变量值
- 条件断点:右键断点设置触发条件
"""
代码说明
- try-except-else-finally 用法:
- try: 尝试执行可能抛出异常的代码(文件打开和读取)。
- except: 捕获并处理特定异常(如文件不存在、权限错误、编码错误等)。
- else: 如果没有异常发生,执行此块(表示文件读取成功)。
- finally: 无论是否发生异常,都会执行(确保文件关闭)。
- 异常类型:
- FileNotFoundError: 文件不存在。
- PermissionError: 无权限访问文件。
- UnicodeDecodeError: 文件编码错误。
- ValueError: 自定义异常,文件内容为空。
- Exception: 通用的“兜底”异常,用于捕获未预料的情况。
- 调试技巧:
- 代码中提供了使用pdb的基本方法,注释中详细说明了常用命令。
- 还介绍了IDE调试的通用步骤,适用于PyCharm或VSCode。
- 测试用例:
- 测试正常文件读取。
- 测试不存在的文件。
- 测试空文件(通过程序创建并读取)。
如何运行和测试
- 保存代码为day3.py。
- 确保当前目录下有一个test.txt文件(例如,写入一些内容如“Hello, Python!”)。
- 运行程序:python day3.py,观察输出结果。
- 如果需要调试,取消注释pdb相关代码,运行后进入交互式调试模式。
猜你喜欢
- 2025-04-24 vscode运行Python的两种方法,及无法运行的原因
- 2025-04-24 谈谈GUI编程
- 2025-04-24 VSCode MCP Server:改进开发流程,打造更智能、更能干的AI智能体
- 2025-04-24 Cursor入门教程-JetBrains过度
- 2025-04-24 10个最常用的 VSCode 快捷键,提升你的编码速度
- 2025-04-24 vscode列编辑
- 2025-04-24 Debug无忧!清华校友打造编程神器:反向追踪变量、数据流等
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)