当前位置: 首页 > news >正文

PYTHON训练营DAY25

BUG与报错

一、try else

try:# 可能会引发异常的代码
except ExceptionType: # 最好指定具体的异常类型,例如 ZeroDivisionError, FileNotFoundError# 当 try 块中发生 ExceptionType 类型的异常时执行的代码
except: # 不推荐:捕获所有类型的异常,可能会隐藏bug# 当 try 块中发生任何其他未被前面 except 捕获的异常时执行的代码

实际应用

try:# 假设 result_operation() 是一个可能出错的操作value = result_operation()
except SomeError:print("操作失败,使用默认值。")value = default_value
else:# 只有当 result_operation() 成功时,才执行这里的代码print(f"操作成功,结果是: {value}。现在进行后续处理...")process_value_further(value)

二、DeBUG

(一)文件目录不存在 FileNotFoundError

场景:尝试访问不存在的文件或目录。
应对:使用 os.path.exists() 检查路径是否存在,或在 try 块中处理异常

import osfile_path = "data/missing_file.txt"try:with open(file_path, "r") as f:data = f.read()
except FileNotFoundError:print(f"错误:文件不存在 - {file_path}")# 可选:创建缺失的目录dir_path = os.path.dirname(file_path)os.makedirs(dir_path, exist_ok=True)
else:print(f"成功读取文件:{len(data)} 字节")

(二)权限不足 (PermissionError)

场景:尝试写入受保护的目录或读取无权限的文件。
应对:检查文件权限

import ostry:# 尝试在系统根目录创建文件(通常会失败)with open("/system_file.txt", "w") as f:f.write("test")
except PermissionError:print("错误:权限不足,无法写入文件。请检查文件权限或使用管理员权限运行。")
else:print("文件写入成功")

(三)目录非空 (OSError 或 PermissionError)

场景:使用 os.rmdir() 删除非空目录。
应对:使用 shutil.rmtree() 递归删除目录,或手动清理目录

import os
import shutildir_path = "data/temp"try:# 尝试删除目录os.rmdir(dir_path)  # 仅适用于空目录
except OSError as e:print(f"错误:无法删除目录 - {e}")# 可选:递归删除非空目录try:shutil.rmtree(dir_path)print(f"已递归删除目录:{dir_path}")except Exception as e2:print(f"仍无法删除:{e2}")
else:print(f"目录已成功删除:{dir_path}")

(四)路径格式错误 (SyntaxError 或 TypeError)

场景:路径包含非法字符(如 Windows 路径中的 :)或类型错误。
应对:使用 os.path.join() 构建路径,或清理用户输入

import os# 错误示例:手动拼接路径(可能导致格式错误)
invalid_path = "C:/windows:system32"  # Windows 路径中包含非法字符try:with open(invalid_path, "r") as f:pass
except (SyntaxError, TypeError) as e:print(f"错误:路径格式不正确 - {e}")# 正确方式:使用 os.path.join()valid_path = os.path.join("C:", "windows", "system32", "file.txt")print(f"正确路径示例:{valid_path}")
else:print("操作成功")

(五)文件已存在 (FileExistsError)

场景:尝试创建已存在的文件或目录(未指定 exist_ok=True)。
应对:检查文件是否存在,或使用 exist_ok=True 参数

import osdir_path = "data/existing_dir"try:# 不指定 exist_ok=True(默认 False)os.makedirs(dir_path)
except FileExistsError:print(f"错误:目录已存在 - {dir_path}")# 可选:添加后缀或删除现有目录new_dir = f"{dir_path}_{os.getpid()}"  # 使用进程ID作为后缀os.makedirs(new_dir)print(f"已创建新目录:{new_dir}")
else:print(f"目录创建成功:{dir_path}")

@浙大疏锦行

http://www.xdnf.cn/news/448147.html

相关文章:

  • WMS仓储管理系统可以跟哪些系统集成
  • ChatPromptTemplate创建方式比较
  • 2025 uniapp的请求封装工具类以及使用【拿来就用】
  • 虚拟机安装CentOS7网络问题
  • Java 日期解析与格式化:从标准格式到自然语言解析
  • 【Bootstrap V4系列】学习入门教程之 组件-分页(Pagination)
  • 如何利用 Java 爬虫获得京东(JD)商品详情:实战指南
  • windows10 安装 QT
  • 国产之光--腾讯云推出AI编程智能助手CodeBuddy
  • HPE ProLiant DL360 Gen11 服务器,配置 RAID 5 教程!
  • Linux篇 第2章Linux基础指令
  • 【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库
  • 序列化和反序列化:从理论到实践的全方位指南
  • c++STL——哈希表封装:实现高效unordered_map与unordered_set
  • teneo自动机器人部署教程
  • 固定步长和变步长的LMS自适应滤波器算法
  • [Spring]-组件的生命周期
  • 【Linux网络】传输层协议TCP
  • TypeScript泛型:从入门到精通的全方位指南
  • Linux下的c/c++开发之操作Redis数据库
  • 上网行为审计软件系统说明书:上网行为审计是什么?是干啥的?哪家好?
  • AI世界的崩塌:当人类思考枯竭引发数据生态链断裂
  • new optimizers for dl
  • 在Unity中制作拥有36年历史的游戏系列新作《桃太郎电铁世界》
  • 通过宝塔配置HTTPS证书
  • Python爬虫实战:研究拦截器,实现逆向解密
  • UI 原型设计:交互规则的三要素——重要性、原则与实践
  • 【Liblib】基于LiblibAI自定义模型,总结一下Python开发步骤
  • 小说所有设定(v3.0 preview)
  • Qml自定义组件之车辆风扇展示