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.pswp.cn/news/905470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905470.shtml
英文地址,請注明出處:http://en.pswp.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 給封裝了&…