PYTHON训练营DAY25

BUG与报错

一、try else

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

实际应用

python 复制代码
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 块中处理异常

python 复制代码
import os

file_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)

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

python 复制代码
import os

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

(三)目录非空 (OSErrorPermissionError)

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

python 复制代码
import os
import shutil

dir_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}")

(四)路径格式错误 (SyntaxErrorTypeError)

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

python 复制代码
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 参数

python 复制代码
import os

dir_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}")

@浙大疏锦行

相关推荐
shmily麻瓜小菜鸡3 分钟前
JavaScript / TypeScript 易踩坑知识点 —— 作用域与变量类
开发语言·javascript·typescript
YYYing.6 分钟前
【C++进阶系列 (一)】关于线程堆栈的那些事 (上篇)
c语言·开发语言·c++·线程堆栈
zh73148 分钟前
Go 1.23 → 1.26 升级检查文档
开发语言·chrome·golang
许彰午8 分钟前
24-MyBatisHelper与autoCount
java·低代码·架构
yan418290dgjkv8 分钟前
2026年汽车贴膜获客新思路:3步锁定精准客户
python·汽车
CRMEB系统商城9 分钟前
汽车养护连锁的数字化底座CRMEB 多门店系统实战方案
java·开发语言·小程序·开源·汽车
甜辣uu10 分钟前
2026计算机毕设选题避坑指南 (2)
python·课程设计·计算机毕设·计算机毕设选题·算法毕设
学编程就要猛15 分钟前
使用Spring AI配置聊天大模型实现人机交互(初阶)
java·spring ai·advisor·chatclient·chatmodel
努力努力再努力wz16 分钟前
【Redis入门系列】:从 RESP 协议到 redis-plus-plus:Redis 客户端编程与 C++ 接口设计
开发语言·数据库·c++·redis·分布式·缓存·架构
张铁霖25 分钟前
进阶玩法:AI项目中数据验证的实战经验分享
python