Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第7章 文件和異常處理_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第7章 文件和異常處理_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第7章 文件和異常處理_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第7章 文件和異常處理_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第7章 文件和異常處理_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章

文件和異常處理目錄7.1文件概述7.2文件訪問(wèn)7.3文件操作7.4os模塊中的文件操作方法7.5shutil模塊中的文件操作方法7.6異常7.1.1

文件的分類(1)文本文件文本文件是指由字母、數(shù)字、符號(hào)和漢字等常規(guī)字符組成的順序文件。其中,字母、數(shù)字等字符存儲(chǔ)的是

ASCII

碼,而漢字存儲(chǔ)的是機(jī)內(nèi)碼。文本文件是由若干文本行組成,通常每行以換行符“\n”結(jié)尾。常規(guī)字符是指記事本或其他文本編輯器能正常顯示、編輯并且人類能夠直接閱讀和理解的字符。例如,擴(kuò)展名為

.txt、.c、.cpp、.py

等文件都屬于文本文件?!纠?-1】文本文件存儲(chǔ)示例若當(dāng)前要存儲(chǔ)一個(gè)整數(shù)數(shù)據(jù)

312685,則該數(shù)據(jù)在磁盤上的存放形式如圖7-1所示。

圖7-1文本文件存儲(chǔ)形式文本文件中的每個(gè)字符都要占用一個(gè)字節(jié)的存儲(chǔ)空間,并且在存儲(chǔ)時(shí)要進(jìn)行二進(jìn)制和ASCII之間的轉(zhuǎn)換,因此使用這種方式消耗空間,也浪費(fèi)時(shí)間。7.1.1

文件的分類(2)二進(jìn)制文件二進(jìn)制文件是指數(shù)據(jù)或程序以字節(jié)串進(jìn)行存儲(chǔ),無(wú)法用記事本或其他普通字符處理軟件直接進(jìn)行編輯,通常也無(wú)法被人類直接閱讀和理解,需要使用正確的軟件進(jìn)行解碼或反序列化之后才能正確地讀取、顯示、修改或執(zhí)行。例如,圖形圖像文件、音頻文件、視頻文件、可執(zhí)行文件等都屬于二進(jìn)制文件。數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存儲(chǔ)的,如果不加轉(zhuǎn)換地輸出到外存,則輸出文件就是一個(gè)二進(jìn)制文件?!纠?-2】二進(jìn)制文件存儲(chǔ)示例若當(dāng)前要存儲(chǔ)一個(gè)整數(shù)數(shù)據(jù)312685,則該數(shù)據(jù)首先被轉(zhuǎn)換為二進(jìn)制整數(shù),轉(zhuǎn)換后的二進(jìn)制整數(shù)為0b1001100010101101101,此時(shí)該數(shù)據(jù)在磁盤上的存儲(chǔ)形式如圖7-2所示。

圖7-2二進(jìn)制文件存儲(chǔ)形式7.1.1

文件的分類對(duì)比圖7-1和圖7-2,可以發(fā)現(xiàn):使用二進(jìn)制文件存放時(shí),占用4個(gè)字節(jié)空間,需要的存儲(chǔ)空間較少(文本文件存儲(chǔ)占6個(gè)字節(jié)),并且不需要進(jìn)行好轉(zhuǎn)換,既節(jié)省空間,又節(jié)省空間。但缺點(diǎn)是不夠直觀,需要經(jīng)過(guò)轉(zhuǎn)換后才能看到存放的數(shù)據(jù)信息。注意:二進(jìn)制文件和文本文件這兩種類型的劃分基于數(shù)據(jù)邏輯存儲(chǔ)結(jié)構(gòu)而非物理存儲(chǔ)結(jié)構(gòu),計(jì)算機(jī)中的數(shù)據(jù)在物理層面都以二進(jìn)制形式存儲(chǔ)。圖7-1文本文件存儲(chǔ)形式圖7-2二進(jìn)制文件存儲(chǔ)形式7.1.1

文件的分類(3)標(biāo)準(zhǔn)文件Python

sys

模塊中定義了

3

個(gè)標(biāo)準(zhǔn)文件,分別為:stdin(標(biāo)準(zhǔn)輸入文件):對(duì)應(yīng)輸入設(shè)備,如鍵盤。stdout(標(biāo)準(zhǔn)輸出文件):對(duì)應(yīng)輸出設(shè)備,如顯示器。stderr(標(biāo)準(zhǔn)錯(cuò)誤文件):對(duì)應(yīng)輸出設(shè)備,如顯示器。在解釋器中添加

sys

模塊后,便可使用

Python

對(duì)象獲取這三個(gè)對(duì)象?!纠?-3】標(biāo)準(zhǔn)文件示例。importsysfile=sys.stdoutfile.write("hello")運(yùn)行結(jié)果:hello結(jié)果分析:以上代碼將標(biāo)準(zhǔn)輸出文件賦給文件對(duì)象file,又通過(guò)文件對(duì)象file調(diào)用內(nèi)置方法write向標(biāo)準(zhǔn)輸出文件寫(xiě)數(shù)據(jù)。觀察代碼執(zhí)行結(jié)果,"hello"被成功寫(xiě)到了標(biāo)準(zhǔn)輸出中。每個(gè)終端都有其對(duì)應(yīng)的標(biāo)準(zhǔn)文件,這些標(biāo)準(zhǔn)文件在終端啟動(dòng)的同時(shí)打開(kāi)。7.1.2

文件的標(biāo)識(shí)一個(gè)文件需要有唯一確定的文件標(biāo)識(shí),保證用戶可以根據(jù)標(biāo)識(shí)找到唯一確定的文件。文件標(biāo)識(shí)包括三個(gè)部分,分別為文件路徑、文件名主干、文件擴(kuò)展名。圖7-3文件標(biāo)識(shí)圖7-3為一個(gè)文件的完整標(biāo)識(shí),根據(jù)該標(biāo)識(shí)可以找到D:\Python\chapter7路徑下擴(kuò)展名為.py、文件名為demo的文本文件。文件路徑是用來(lái)定位文件在計(jì)算機(jī)文件系統(tǒng)中位置的字符串。文件的路徑可分為絕對(duì)路徑和相對(duì)路徑。12絕對(duì)路徑是一個(gè)文件或目錄在文件系統(tǒng)中的完整路徑,包括從根目錄開(kāi)始一直到目標(biāo)文件或目錄的所有目錄層級(jí)信息。相對(duì)路徑是指文件或目錄相對(duì)于當(dāng)前工作目錄的位置,而不是從根目錄開(kāi)始的完整路徑。它是相對(duì)于當(dāng)前工作目錄的路徑描述。相對(duì)路徑絕對(duì)路徑7.2

文件訪問(wèn)在Python中,無(wú)論是文本文件還是二進(jìn)制文件,對(duì)其操作流程基本是一致的,訪問(wèn)文件可以分為三步:(1)打開(kāi)文件使用open函數(shù)以指定的模式,如讀取、寫(xiě)入、追加等方式打開(kāi)文件。在打開(kāi)文件后,會(huì)得到一個(gè)文件對(duì)象,后續(xù)的文件操作都將通過(guò)這個(gè)對(duì)象進(jìn)行。(2)讀或?qū)懳募ㄟ^(guò)文件對(duì)象進(jìn)行讀取或?qū)懭氩僮?。這包括讀取文件內(nèi)容、寫(xiě)入數(shù)據(jù)到文件、移動(dòng)文件指針等。具體的文件操作取決于打開(kāi)文件的模式以及實(shí)際需求。(3)關(guān)閉文件調(diào)用文件對(duì)象的close函數(shù)關(guān)閉文件,釋放系統(tǒng)資源。7.2.1打開(kāi)文件

Python內(nèi)置函數(shù)open用于指定模式打開(kāi)指定文件并返回一個(gè)文件對(duì)象,其一般格式如下:open(file,mode='r',buffering=-1)參數(shù)含義如下:1)file:要打開(kāi)的文件的路徑或文件對(duì)象??梢允窍鄬?duì)路徑、絕對(duì)路徑或文件對(duì)象。2)mode:打開(kāi)文件的模式。默認(rèn)為讀取模式'r'。3)buffering:緩沖策略。控制文件的緩沖行為。默認(rèn)值為-1,表示使用系統(tǒng)默認(rèn)的緩沖區(qū)大小。0表示不緩沖,1表示行緩沖,其他正整數(shù)表示緩沖區(qū)大小。模式名稱說(shuō)明'r'/'rb'只讀模式以只讀的形式打開(kāi)文本文件/二進(jìn)制文件,若文件不存在或無(wú)法找到,文件打開(kāi)失敗。'w'/'wb'只寫(xiě)模式以只寫(xiě)的形式打開(kāi)文本文件/二進(jìn)制文件,若文件已存在,則重寫(xiě)文件,否則創(chuàng)建新文件。'a'/'ab'追加模式以只寫(xiě)的形式打開(kāi)文本文件/二進(jìn)制文件,只允許在該文件末尾追加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件。'r+'/'rb+'讀?。ǜ拢┠J揭宰x/寫(xiě)的形式打開(kāi)文本文件/二進(jìn)制文件,若文件不存在,文件打開(kāi)失敗。'w+'/'wb+'寫(xiě)入(更新)模式以讀/寫(xiě)的形式打開(kāi)文本文件/二進(jìn)制文件,若文件已存在,則重寫(xiě)文件。'a+'/'ab+'追加(更新)模式以讀/寫(xiě)的形式打開(kāi)文本/二進(jìn)制文件,只允許在文件末尾添加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件。7.2.2關(guān)閉文件在Python中,關(guān)閉文件是一個(gè)重要的操作,以釋放系統(tǒng)資源并確保對(duì)文件所做的更改被正確保存。通常,使用close方法來(lái)手動(dòng)關(guān)閉文件。最佳的實(shí)踐是在文件操作結(jié)束后立即關(guān)閉文件,或者使用with語(yǔ)句(上下文管理器),這將確保文件在離開(kāi)代碼塊時(shí)自動(dòng)關(guān)閉。(1)close方法文件使用完畢后則通過(guò)close方法關(guān)閉文件,一般格式如下:file.close()程序執(zhí)行完畢后,系統(tǒng)會(huì)關(guān)閉由該程序打開(kāi)的文件,但更好的做法是在文件使用完畢后,由程序調(diào)用close方法關(guān)閉文件。(2)with語(yǔ)句with-as語(yǔ)句適用于對(duì)資源進(jìn)行訪問(wèn)的場(chǎng)合,可確保不管在使用過(guò)程中是否發(fā)生異常都會(huì)執(zhí)行必要的“清理”操作,釋放使用資源,如文件使用后自動(dòng)關(guān)閉等。在Python中,對(duì)文件進(jìn)行讀/寫(xiě)時(shí)的with-as語(yǔ)句常用格式如下:withopen(filename[,mode])asfile:語(yǔ)句塊其中,file為open函數(shù)返回的文件對(duì)象。7.3

文件操作在Python中,文件的讀寫(xiě)是常見(jiàn)的任務(wù)之一。當(dāng)文件被打開(kāi)后,根據(jù)打開(kāi)方式不同,可以對(duì)文件進(jìn)行相應(yīng)的操作(如讀、寫(xiě)以及關(guān)閉等),這些操作由文件對(duì)象的相關(guān)函數(shù)完成。當(dāng)打開(kāi)文本文件時(shí),讀寫(xiě)按照字符串方式,采用當(dāng)前計(jì)算機(jī)使用的編碼或指定編碼;當(dāng)打開(kāi)二進(jìn)制文件時(shí),讀寫(xiě)按照字節(jié)流的形式。7.3.1

文件讀操作(1)read(size=-1)函數(shù)read(size=-1)函數(shù)用于讀取指定大小的字符或字節(jié);可選的“size”參數(shù)指定要讀取的字節(jié)數(shù)或者字符數(shù),默認(rèn)值為-1,表示讀取整個(gè)文件;此函數(shù)的返回值為返回讀取的內(nèi)容。(2)readline(size=-1)函數(shù)此函數(shù)的用途為讀取文件的一行。size參數(shù)是可選的,表示要讀取的字節(jié)數(shù),默認(rèn)值為-1,表示讀取整行數(shù)據(jù)。此函數(shù)的返回值為讀取的行內(nèi)容。(3)readlines(hint=-1)函數(shù)此函數(shù)的用途為讀取所有行,并返回一個(gè)包含各行內(nèi)容的列表??蛇x的參數(shù)hint表示要讀取指定的字節(jié)數(shù),默認(rèn)值為-1,表示讀取所有行。此函數(shù)的返回值為包含文件所有行內(nèi)容的列表。模式含義<file>.read(size=-1)從文件中讀取整個(gè)文件內(nèi)容,如果給出參數(shù),讀取前size長(zhǎng)度的字符串或字節(jié)流。<file>.readline(size=-1)從文件中讀取一行內(nèi)容,如果給出參數(shù),讀取前size長(zhǎng)度的字符串或字節(jié)流。<file>.readlines(hint=-1)從文件中讀取所有行,以每行為元素形成一個(gè)列表,如果給出參數(shù),讀取hint行。(1)write

函數(shù)file.write(string)其中,file是一個(gè)打開(kāi)的文件對(duì)象。可以使用內(nèi)置函數(shù)

open

函數(shù)打開(kāi)文件,或者為使用

with

語(yǔ)句時(shí)由open

函數(shù)返回的文件對(duì)象。string

為要寫(xiě)入文件的字符串。write

方法將指定的字符串寫(xiě)入文件。如果文件已經(jīng)存在,寫(xiě)入文件將會(huì)覆蓋文件中的內(nèi)容。如果文件不存在,則會(huì)創(chuàng)建一個(gè)新文件進(jìn)行寫(xiě)入。(2)writelines

函數(shù)file.writelines(lines)其中,file是一個(gè)打開(kāi)的文件對(duì)象??梢允褂脙?nèi)置函數(shù)

open

函數(shù)打開(kāi)文件,或者為使用

with

語(yǔ)句時(shí)由open

函數(shù)返回的文件對(duì)象。lines

包括字符串的列表或可迭代對(duì)象。writelines

方法將列表中的每個(gè)字符串按順序?qū)懭胛募?,每個(gè)字符串占據(jù)一行。如果文件已經(jīng)存在,寫(xiě)入操作將會(huì)覆蓋文件中的內(nèi)容。如果文件不存在,則會(huì)創(chuàng)建一個(gè)新文件進(jìn)行寫(xiě)入。7.3.2

文件寫(xiě)操作方法說(shuō)明<file>.write(s)向文件寫(xiě)入一個(gè)字符串或字節(jié)流<file>.writelines(lines)將一個(gè)字符串列表寫(xiě)入文件中(1)tell

方法tell

是文件對(duì)象的一個(gè)方法,用于獲取當(dāng)前文件指針的位置(即當(dāng)前讀取或?qū)懭氲奈恢茫?。它沒(méi)有參數(shù),調(diào)用它時(shí)不需要傳遞任何參數(shù)。file.tell()其中,file

是文件對(duì)象,可以通過(guò)

open

函數(shù)打開(kāi)文件獲得。tell

方法返回一個(gè)整數(shù),表示當(dāng)前文件指針的位置,即從文件頭到當(dāng)前位置的字節(jié)數(shù)偏移量。一般來(lái)說(shuō),初始時(shí)文件指針位于文件開(kāi)頭,即偏移量為

0。(2)seek

方法Python

提供了

seek

方法,使用該方法可控制文件的讀寫(xiě)位置,實(shí)現(xiàn)文件的隨機(jī)讀寫(xiě)。seek(offset,from)其中,參數(shù)

offset

表示偏移量,即讀寫(xiě)位置需要移動(dòng)的字節(jié)數(shù),可以為正數(shù)、負(fù)數(shù)或零。參數(shù)

from

用于指定文件的讀寫(xiě)位置。seek

方法調(diào)用成功后會(huì)返回當(dāng)前讀寫(xiě)位置。7.3.3

文件的定位讀寫(xiě)操作方法說(shuō)明<file>.tell()獲取文件當(dāng)前的讀寫(xiě)位置。<file>.seek(offset,from)控制文件的讀寫(xiě)位置。在

Python

中,文件迭代器通常是通過(guò)“

open

”函數(shù)與“

for

”循環(huán)結(jié)合使用來(lái)實(shí)現(xiàn)的。當(dāng)打開(kāi)一個(gè)文件并對(duì)其進(jìn)行迭代時(shí),Python

會(huì)將文件對(duì)象視為一個(gè)迭代器,并按行逐個(gè)讀取文件內(nèi)容,而不需要一次性將整個(gè)文件加載到內(nèi)存中。這對(duì)于處理大型文件或者需要逐行處理文件內(nèi)容的情況非常有用。7.3.4

文件迭代操作os(OperatingSystem)模塊是

Python

標(biāo)準(zhǔn)庫(kù)中的一個(gè)核心模塊,提供了與操作系統(tǒng)相關(guān)的功能,使得

Python

程序能夠與操作系統(tǒng)進(jìn)行交互。os

模塊提供了一些方法來(lái)獲取關(guān)于平臺(tái)信息的操作。7.4os模塊中的文件操作方法——獲取平臺(tái)信息屬性/方法說(shuō)明返回當(dāng)前操作系統(tǒng)的名稱os.environ返回一個(gè)包含當(dāng)前系統(tǒng)環(huán)境變量的字典os.cpu_count()返回當(dāng)前系統(tǒng)的cpu核心數(shù)os.getcwd()獲取當(dāng)前工作目錄os.sep返回操作系統(tǒng)特定的路徑分隔符os.pathsep查看用于分隔文件路徑的字符串7.4os

模塊中的文件操作方法——文件/目錄操作os模塊中定義了與文件操作相關(guān)的函數(shù),利用這些函數(shù)可以實(shí)現(xiàn)刪除文件、文件重命名、創(chuàng)建/刪除目錄、獲取當(dāng)前目錄、更改默認(rèn)目錄與獲取目錄列表等操作。方法說(shuō)明os.mkdir(newpath)創(chuàng)建新目錄newpathos.rmdir(path)刪除目錄pathos.listdir(path)列出指定目錄path下所有的文件os.chdir(path)改變當(dāng)前腳本的工作目錄為指定路徑pathos.remove(file)刪除一個(gè)指定文件fileos.rename(oldname,newname)重命名一個(gè)文件7.4os

模塊中的文件操作方法——os.path模塊

os.path

模塊提供了許多用于處理文件路徑的方法,提供了大量用于路徑判斷、切分、連接以及文件夾的遍歷方法。方法說(shuō)明os.path.join(path1,path2,...)將多個(gè)路徑組合成一個(gè)路徑,在不同操作系統(tǒng)下會(huì)自動(dòng)根據(jù)相應(yīng)的路徑分隔符來(lái)進(jìn)行拼接。os.path.split(path)將路徑分割成目錄和文件名兩部分,并返回一個(gè)元組(head,tail)os.path.dirname(path)返回路徑中的目錄部分os.path.basename(path)返回路徑中的文件名部分os.path.splitext(path)分割路徑的文件名和擴(kuò)展名,并返回一個(gè)包含文件名和擴(kuò)展名的元組(root,ext)os.path.exists(path)判斷路徑是否存在os.path.isfile(path)判斷路徑是否為一個(gè)文件os.path.isdir(path)判斷路徑是否為一個(gè)目錄os.path.abspath(path)返回路徑的絕對(duì)路徑os.path.normpath(path)規(guī)范化路徑,消除路徑中的冗余monprefix(list)返回多個(gè)路徑的公共前綴7.5shutil

模塊中的文件操作方法

shutil

模塊提供了許多文件操作的方法,這些方法可以在不同的平臺(tái)上執(zhí)行各種文件相關(guān)的操作,下表是

shutil

模塊中一些常用的文件操作方法。方法說(shuō)明shutil.copy(src,dst)復(fù)制文件,新文件具有相同的文件屬性,如果目標(biāo)文件已經(jīng)存在則拋出異常。shutil.copyfile(src,dst)復(fù)制文件,不復(fù)制文件屬性,如果目標(biāo)文件已存在則直接覆蓋。shutil.copytree(src,dst)遞歸復(fù)制文件夾shutil.disk_usage(path)查看硬盤使用情況shutil.move(src,dst)移動(dòng)或遞歸移動(dòng)文件夾,也可以用來(lái)給文件和文件夾重命名shutil.rmtree(path)遞歸刪除文件夾shutil.make_archive(filename,format,path)創(chuàng)建tar或zip格式的壓縮文件shutil.unpack_archive(filename,path)解壓縮文件7.6.1

異常的定義和分類

異常(Exception)是指程序在運(yùn)行時(shí)遇到的錯(cuò)誤或意外的情況。如果程序中沒(méi)有對(duì)異常進(jìn)行處理,則程序會(huì)拋出該異常并停止運(yùn)行。為了保證程序的穩(wěn)定性和容錯(cuò)性,需要在程序中捕獲可能的異常并對(duì)其進(jìn)行處理,使得程序不會(huì)因?yàn)楫惓6馔饨K止。

異??梢苑譃閮深悾赫Z(yǔ)法錯(cuò)誤(SyntaxError)和邏輯錯(cuò)誤(Exception)兩類。12語(yǔ)法錯(cuò)誤是指在

Python

解釋器運(yùn)行代碼之前就發(fā)生的錯(cuò)誤,通常是由于代碼不符合

Python語(yǔ)法規(guī)則造成的。邏輯錯(cuò)誤是指在

Python

解釋器運(yùn)行代碼時(shí)發(fā)現(xiàn)的錯(cuò)誤,通常是由于程序邏輯不正確造成的。邏輯錯(cuò)誤語(yǔ)法錯(cuò)誤7.6.1

異常的定義和分類異常描述ZeroDivisionError除數(shù)為零錯(cuò)誤,例如

10/0。TypeError類型錯(cuò)誤,例如使用了不兼容的數(shù)據(jù)類型,例如

1+'2'。ValueError值錯(cuò)誤,例如傳遞了錯(cuò)誤的參數(shù)值,例如

int('abc')。IndexError索引錯(cuò)誤,例如訪問(wèn)了不存在的索引,例如

lst[10]。KeyError鍵錯(cuò)誤,例如訪問(wèn)了不存在的鍵,例如

dct['key']。NameError名稱錯(cuò)誤,例如使用了未定義的變量或函數(shù),例如

undefined_var。AttributeError屬性錯(cuò)誤,例如訪問(wèn)了不存在的屬性,例如

obj.undefined_attr。FileNotFoundError文件未找到錯(cuò)誤,例如打開(kāi)了不存在的文件,例如

open('file.txt')。IndentationError縮進(jìn)錯(cuò)誤,例如縮進(jìn)不正確,例如

ifTrue:print('Hello').SyntaxError語(yǔ)法錯(cuò)誤,例如代碼不符合語(yǔ)法規(guī)則,例如

print'Hello'。ImportError導(dǎo)入錯(cuò)誤,例如導(dǎo)入了不存在的模塊,例如

importundefined_module。TypeError類型錯(cuò)誤,例如使用了不兼容的數(shù)據(jù)類型,例如

1+'2'。ValueError值錯(cuò)誤,例如傳遞了錯(cuò)誤的參數(shù)值,例如

int('abc')。IndexError索引錯(cuò)誤,例如訪問(wèn)了不存在的索引,例如

lst[10]。KeyError鍵錯(cuò)誤,例如訪問(wèn)了不存在的鍵,例如

dct['key']。NameError名稱錯(cuò)誤,例如使用了未定義的變量或函數(shù),例如

undefined_var。AttributeError屬性錯(cuò)誤,例如訪問(wèn)了不存在的屬性,例如

obj.undefined_attr。FileNotFoundError文件未找到錯(cuò)誤,例如打開(kāi)了不存在的文件,例如

open('file.txt')。IndentationError縮進(jìn)錯(cuò)誤,例如縮進(jìn)不正確,例如

ifTrue:print('Hello').SyntaxError語(yǔ)法錯(cuò)誤,例如代碼不符合語(yǔ)法規(guī)則,例如

print'Hello'。ImportError導(dǎo)入錯(cuò)誤,例如導(dǎo)入了不存在的模塊,例如

importundefined_module。7.6.2

異常的處理編寫(xiě)程序時(shí)可以對(duì)指定的異常做處理,以增強(qiáng)程序的穩(wěn)定性和容錯(cuò)性。(1)try-except使用try-except語(yǔ)句可以捕獲異常并做異常處理,其語(yǔ)法格式如下:try:待捕獲異常的語(yǔ)句塊except異常類型1:異常類型1的處理語(yǔ)句塊except異常類型2:異常類型2的處理語(yǔ)句塊......except異常類型N:異常類型N的處理語(yǔ)句塊Try-except語(yǔ)句的處理過(guò)程為執(zhí)行try后面待捕獲異常的語(yǔ)句塊。如果沒(méi)有異常發(fā)生,則except子句不被執(zhí)行。如果有異常發(fā)生,則根據(jù)異常類型匹配每一個(gè)except關(guān)鍵字后面的異常名,并執(zhí)行匹配的except子句的語(yǔ)句塊;如果異常類型與所有except子句都不匹配,則該異常會(huì)傳給更外層的tryexcept語(yǔ)句;如果異常無(wú)法被任何except子句處理,則程序拋出異常并停止運(yùn)行。7.6.2

異常的處理(2)elseelse子句是try-except語(yǔ)句中的一個(gè)可選項(xiàng)。如果try子句執(zhí)行時(shí)沒(méi)有發(fā)生異常,則在try子句執(zhí)行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論