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.mzph.cn/news/905470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LU分解求解线性方程组

L U LU LU分解 前言 L U LU LU分解 由以下定理得以保证: 设 A \boldsymbol{A} A为 n n n阶方阵,若其各界阶顺序主子式都不为 0 0 0,那么它可以 被唯一的上下三角矩阵积分解。 步骤 确定各矩阵形式 A L U \mathbf{A}\mathbf{LU} ALU ( a 1…

Linux——数据库备份与恢复

一,Mysql数据库备份概述 1,数据库备份的重要性 数据灾难恢复:数据库可能会因为各种原因出现故障,如硬件故障、软件错误、误操作、病毒攻击、自然灾害等。这些情况都可能导致数据丢失或损坏。如果有定期的备份,就可以…

SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践

SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践 医疗设备的高可靠性、安全性及严格合规性要求,使其故障维修决策具有显著的特殊性。支持向量机(SVM)凭借小样本学习、非线性建模及高精度分类能力,可有效解决…

WEB安全--Java安全--CC1利用链

一、梳理基本逻辑 WEB后端JVM通过readObject()的反序列化方式接收用户输入的数据 用户编写恶意代码并将其序列化为原始数据流 WEB后端JVM接收到序列化后恶意的原始数据并进行反序列化 当调用: ObjectInputStream.readObject() JVM 内部逻辑: → 反…

FlashInfer - 介绍 LLM服务加速库 地基的一块石头

FlashInfer - 介绍 LLM服务加速库 地基的一块石头 flyfish 大型语言模型服务中的注意力机制 大型语言模型服务(LLM Serving)迅速成为重要的工作负载。Transformer中的算子效率——尤其是矩阵乘法(GEMM)、自注意力(S…

反向操作:如何用AI检测工具优化自己的论文“人味”?

大家好,这里是论文写手的一线自救指南😤 在AIGC横行的今天,谁还没偷偷用过AI写几段论文内容?但问题来了:学校越来越会“识AI”了! 有的学校甚至不看重复率,只盯AIGC率报告,一句“AI…

关于单片机的基础知识(一)

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片机基础知识的相关内容&#xf…

AWS技术助力企业满足GDPR合规要求

GDPR(通用数据保护条例)作为欧盟严格的数据保护法规,给许多企业带来了合规挑战。本文将探讨如何利用AWS(亚马逊云服务)的相关技术来满足GDPR的核心要求,帮助企业实现数据保护合规。 一、GDPR核心要求概览 GDPR的主要目标是保护欧盟公民的个人数据和隐私权。其核心要求包括: 数…

FFplay 音视频同步机制解析:以音频为基准的时间校准与动态帧调整策略

1.⾳视频同步基础 1.2 简介 看视频时,要是声音和画面不同步,体验会大打折扣。之所以会出现这种情况,和音视频数据的处理过程密切相关。音频和视频的输出不在同一个线程,就像两个工人在不同车间工作,而且不一定会同时…

车载网关--- 职责边界划分与功能解耦设计

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…

最优化方法Python计算:有约束优化应用——近似线性可分问题支持向量机

二分问题的数据集 { ( x i , y i ) } \{(\boldsymbol{x}_i,y_i)\} {(xi​,yi​)}, i 1 , 2 , ⋯ , m i1,2,\cdots,m i1,2,⋯,m中,特征数据 { x i } \{\boldsymbol{x}_i\} {xi​}未必能被一块超平面按其标签值 y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi​∈…

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…

数字IC后端设计实现 | 如何自动删除Innovus 中冗余的hold buffer?

我们都知道在postCTS阶段做optDesign时序优化时需要进行hold violation的fixing。所以这个过程势必要通过插hold buffer来解决hold violation。这类hold buffer的名字带有"PHC"的关键词。 select_obj [dbGet top.insts.name PHC] llength [dbGet top.insts.name PH…

c# 倒序方法

在C#中&#xff0c;有几种方法可以对List进行倒序排列&#xff1a; 1. 使用List的Reverse()方法&#xff08;原地反转&#xff09; List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果&#xff1a;5, 4, 3, 2, 1 …

【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权

【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权 文章目录 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权[toc]一&#xff1a;Kerberos 委派攻击原理之 S4U2利用1.1原理1.2两种扩展协议**S4U2Self (Service for User to Self)****S4U2Proxy (Service for User to Proxy)*…

AD 间距规则与布线规则

1. 打开在线规则检查 2. 间距规则 一般来说最小间距设为6mil 注意&#xff1a; AD22 也提供类似低版本那样的、多个间距规则叠加的方法&#xff0c;通过选择第一个适配对象和第二个适配对象来筛选对象和范围。 ① Where The First Object Matches &#xff1a;选择规则第一个…

Android Studio 安装与配置完全指南

文章目录 第一部分&#xff1a;Android Studio 简介与安装准备1.1 Android Studio 概述1.2 系统要求Windows 系统&#xff1a;macOS 系统&#xff1a;Linux 系统&#xff1a; 1.3 下载 Android Studio 第二部分&#xff1a;安装 Android Studio2.1 Windows 系统安装步骤2.2 mac…

springboot踩坑记录

之前运行好端端的项目&#xff0c;今天下午打开只是添加了一个文件之后 再运行都报Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver class Action: Conside…

【计算机视觉】OpenCV实战项目:Deep Machine Learning Tutors:基于OpenCV的实时面部识别系统深度解析

Deep Machine Learning Tutors&#xff1a;基于OpenCV的实时面部识别系统深度解析 1. 项目概述2. 技术原理2.1 面部识别流程2.2 关键技术组件2.2.1 Haar级联分类器2.2.2 深度特征提取 3. 项目实现细节3.1 系统架构3.2 核心算法实现3.2.1 人脸检测3.2.2 实时处理流水线 4. 项目运…

Flutter在键盘的上方加一个完成按钮

有些情况下&#xff0c;输入框在输入键盘弹出后&#xff0c; 需要在键盘的上方显示一个toolbar &#xff0c; 然后 toolbar 上面一个完成按钮&#xff0c;点完成按钮把键盘关闭。 如图&#xff1a; 直接上代码&#xff0c;这样写的好处是&#xff0c;把 TextField 给封装了&…