版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù)1認(rèn)識(shí)文件01任務(wù)2使用文件操作函數(shù)完成文本的讀寫(xiě)02任務(wù)3Python不同文件模塊的使用03357任務(wù)4基于文件操作的異常處理04任務(wù)1認(rèn)識(shí)文件3581.?了解文件路徑的基本概念。2.?了解文件的兩種路徑。3.?了解文件操作基礎(chǔ)。任務(wù)目標(biāo)359一、文件路徑在程序運(yùn)行時(shí),變量是臨時(shí)存儲(chǔ)數(shù)據(jù)的一種方式,一旦程序結(jié)束,這些數(shù)據(jù)將會(huì)丟失。如果希望在程序結(jié)束后數(shù)據(jù)仍然保留,就需要將數(shù)據(jù)保存到文件中。Python提供了內(nèi)置的文件對(duì)象以及操作文件和目錄的內(nèi)置模塊,通過(guò)這些技術(shù),可以輕松地將數(shù)據(jù)存儲(chǔ)到文件中。文件有兩個(gè)重要屬性:文件名和路徑。文件名是為每個(gè)文件設(shè)置的名稱(chēng),而路徑則用來(lái)指明文件在計(jì)算機(jī)中的位置。相關(guān)知識(shí)360注意:路徑中的“D:\”是指“根文件夾”,它包含了所有其他文件夾。在Windows系統(tǒng)中,根文件夾名為“D:\”,也稱(chēng)“D:”盤(pán)。在OSX和Linux系統(tǒng)中,根文件夾是“/”。本教材的示例使用的是Windows風(fēng)格的根文件夾,如果在OSX或Linux系統(tǒng)中輸入交互式環(huán)境的例子,應(yīng)用“/”代替。另外,附加卷(如DVD驅(qū)動(dòng)器或USB閃存驅(qū)動(dòng)器)在不同的操作系統(tǒng)中的表示形式也不同。在Windows系統(tǒng)中,書(shū)寫(xiě)路徑時(shí)使用反斜杠“\”作為文件夾之間的分隔符。361在交互式環(huán)境中輸入如下代碼。>>>importos>>>os.path.join('demo','exercise')'demo\\exercise'因?yàn)榇顺绦蚴窃赪indows系統(tǒng)中運(yùn)行的,所以os.path.join('demo','exercise')返回'demo\\exercise'(注意:反斜杠有兩個(gè),因?yàn)槊總€(gè)反斜杠需要由另一個(gè)反斜杠字符來(lái)轉(zhuǎn)義)。如果在OSX或Linux系統(tǒng)中調(diào)用這個(gè)函數(shù),該字符串就會(huì)是'demo/exercise'。如果需要?jiǎng)?chuàng)建帶有文件名的文件存儲(chǔ)路徑,同樣可以使用os.path.join函數(shù)。362二、絕對(duì)路徑和相對(duì)路徑絕對(duì)路徑能夠完整地表示出文件的真實(shí)位置,并且可以根據(jù)這個(gè)路徑層級(jí)找到文件。在Windows系統(tǒng)中可以通過(guò)“Shift+鼠標(biāo)右鍵”單擊文件調(diào)出文件的絕對(duì)路徑。調(diào)出文件絕對(duì)路徑的方法如圖所示,先按住Shift鍵,把光標(biāo)移至需要獲取絕對(duì)路徑的文件圖標(biāo)處,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“復(fù)制文件地址”命令,即可將其絕對(duì)路徑復(fù)制到剪貼板處。363相對(duì)路徑即相對(duì)于當(dāng)前工作文件夾,目標(biāo)文件夾的路徑。以Windows系統(tǒng)為例,“.\”代表當(dāng)前目錄,“..\”代表上一層目錄,“\”代表根目錄。364調(diào)出文件絕對(duì)路徑的方法三、文件操作基礎(chǔ)(1)文件的基本操作:作用于文件本身,屬于系統(tǒng)級(jí)操作?!駝?chuàng)建文件:使用內(nèi)置的open函數(shù)創(chuàng)建一個(gè)新文件,并返回一個(gè)文件對(duì)象??梢灾付ㄎ募拿Q(chēng)、打開(kāi)模式和編碼等參數(shù)?!駝h除文件:使用os.remove函數(shù)刪除指定的文件?!裥薷臋?quán)限:使用os.chmod函數(shù)修改文件的權(quán)限。可以設(shè)置文件的所有者、組和其他用戶(hù)的權(quán)限。●重命名文件:使用os.rename函數(shù)重命名指定的文件。●移動(dòng)文件:使用shutil.move函數(shù)移動(dòng)指定的文件到新的位置。365(2)文件的讀寫(xiě)操作:最常用的文件操作,作用于文件的內(nèi)容,屬于應(yīng)用級(jí)操作。●讀取文件:使用文件對(duì)象的read()方法讀取文件內(nèi)容??梢砸淮巫x取全部?jī)?nèi)容,也可以按行讀取?!駥?xiě)入文件:使用文件對(duì)象的write()方法寫(xiě)入內(nèi)容??梢砸淮螌?xiě)入一行或一次寫(xiě)入多行。其中,對(duì)文件的系統(tǒng)級(jí)操作功能單一,比較容易實(shí)現(xiàn),可以借助Python中的專(zhuān)用模塊(os、sys等),并調(diào)用模塊中的指定函數(shù)實(shí)現(xiàn)。366文件的應(yīng)用級(jí)操作可以分為以下3步,每一步都需要借助對(duì)應(yīng)的函數(shù)實(shí)現(xiàn)?!翊蜷_(kāi)文件:使用open函數(shù),該函數(shù)會(huì)返回一個(gè)文件對(duì)象?!駥?duì)已打開(kāi)的文件做讀/寫(xiě)操作:讀取文件內(nèi)容可以使用read、readline以及readlines函數(shù);向文件中寫(xiě)入內(nèi)容可以使用write函數(shù)。●關(guān)閉文件:完成對(duì)文件的讀/寫(xiě)操作之后,需要關(guān)閉文件,可以使用close函數(shù)。一個(gè)文件,必須在打開(kāi)之后才能對(duì)其進(jìn)行操作,并且在操作結(jié)束之后,還應(yīng)將其關(guān)閉,操作順序不能打亂。367任務(wù)2
使用文件操作函數(shù)完成文本的讀寫(xiě)3681.?掌握常用文件操作函數(shù)的使用。2.?能運(yùn)用文件操作函數(shù)進(jìn)行讀寫(xiě)等操作。任務(wù)目標(biāo)369一、open函數(shù)在Python中,經(jīng)常需要?jiǎng)?chuàng)建或打開(kāi)指定的文件,并創(chuàng)建文件對(duì)象,這些操作可以通過(guò)內(nèi)置的open函數(shù)實(shí)現(xiàn)。該函數(shù)的常用語(yǔ)法格式如下。file=open(file_name[,mode='r'[,buffering=-1[,encoding=None]]])在此格式中,用“[]”括起來(lái)的部分為可選參數(shù),既可以使用,又可以省略。其中,各個(gè)參數(shù)的含義如下?!?le:要?jiǎng)?chuàng)建的文件對(duì)象。相關(guān)知識(shí)370●?le_name:要?jiǎng)?chuàng)建或打開(kāi)文件的名稱(chēng),若為字符串類(lèi)型,需要用引號(hào)(單引號(hào)或雙引號(hào)都可以)括起來(lái)。注意:如果要打開(kāi)的文件和當(dāng)前執(zhí)行的代碼文件位于同一目錄,則直接寫(xiě)文件名即可;否則,此參數(shù)需要指定打開(kāi)文件所在的完整路徑?!駇ode:可選參數(shù),用于指定文件打開(kāi)模式?!馼u?ering:可選參數(shù),用于指定對(duì)文件做讀寫(xiě)操作時(shí),是否使用緩沖區(qū)?!馿ncoding:手動(dòng)設(shè)定打開(kāi)文件時(shí)所使用的編碼格式,不同平臺(tái)的encoding參數(shù)值不同,以Windows系統(tǒng)為例,其默認(rèn)為CP936(GBK)編碼。371372二、read函數(shù)read函數(shù)用于逐個(gè)字節(jié)或字符讀取文件中的內(nèi)容。對(duì)于借助open函數(shù),并以可讀模式(包括r、r+、rb、rb+)打開(kāi)的文件,可以調(diào)用read函數(shù)逐個(gè)字節(jié)(或逐個(gè)字符)讀取文件中的內(nèi)容。如果文件是以文本模式(非二進(jìn)制模式)打開(kāi)的,則read函數(shù)會(huì)逐個(gè)字符進(jìn)行讀?。环粗?,read函數(shù)會(huì)逐個(gè)字節(jié)進(jìn)行讀取。373read函數(shù)的基本語(yǔ)法格式如下。file.read([size])其中,?le表示打開(kāi)的文件對(duì)象;size作為一個(gè)可選參數(shù),用于指定一次最多可讀取的字符(字節(jié))個(gè)數(shù),如果省略,則默認(rèn)一次性讀取所有內(nèi)容。374三、readline函數(shù)readline函數(shù)用于讀取文件中的一行,包含最后的換行符“\n”。readline函數(shù)的基本語(yǔ)法格式如下。file.readline([size])其中,?le表示打開(kāi)的文件對(duì)象;size表示可選參數(shù),用于指定讀取每一行時(shí),一次最多讀取的字符(字節(jié))數(shù)。和read函數(shù)一樣,readline函數(shù)成功讀取文件數(shù)據(jù)的前提是,使用open函數(shù)指定打開(kāi)文件的模式必須為可讀模式(包括r、rb、r+、rb+4種)。375四、readlines函數(shù)readlines函數(shù)用于讀取文件中的所有行,它和調(diào)用不指定size參數(shù)的read函數(shù)類(lèi)似,只不過(guò)該函數(shù)返回的是一個(gè)字符串列表,其中每個(gè)元素為文件中的一行內(nèi)容。和readline函數(shù)一樣,readlines函數(shù)在讀取每一行時(shí),會(huì)連同行尾的換行符一起讀取。readlines函數(shù)的基本語(yǔ)法格式如下。file.readlines()其中,?le表示打開(kāi)的文件對(duì)象。與read、readline函數(shù)一樣,readlines函數(shù)要求打開(kāi)文件的模式必須為可讀模式。376五、write函數(shù)Python中的文件對(duì)象提供了write函數(shù),可以向文件中寫(xiě)入指定的內(nèi)容。write函數(shù)的語(yǔ)法格式如下。file.write(string)其中,?le表示打開(kāi)的文件對(duì)象;string表示要寫(xiě)入文件的字符串(或字節(jié)串,僅適合寫(xiě)入二進(jìn)制文件)。注意:在使用write函數(shù)向文件寫(xiě)入數(shù)據(jù)時(shí),需保證使用open函數(shù)指定打開(kāi)文件的模式必須為r+、w、w+、a或a+,否則執(zhí)行write函數(shù)會(huì)報(bào)io.UnsupportedOperation錯(cuò)誤。377六、writelines函數(shù)Python的文件對(duì)象中不僅提供了write函數(shù),還提供了writelines函數(shù),可以實(shí)現(xiàn)將字符串列表寫(xiě)入文件。注意:寫(xiě)入函數(shù)只有write和writelines函數(shù),而沒(méi)有名為writeline的函數(shù)。writelines函數(shù)的語(yǔ)法格式如下。file.writelines(list)其中,list表示字符串列表(如["小藍(lán)","小紅"])。378七、close函數(shù)對(duì)于使用open函數(shù)打開(kāi)的文件,在完成相應(yīng)的操作之后,需要用close函數(shù)將其手動(dòng)關(guān)閉,否則程序的運(yùn)行可能出現(xiàn)問(wèn)題。close函數(shù)是專(zhuān)門(mén)用來(lái)關(guān)閉已打開(kāi)文件的,其語(yǔ)法格式如下。file.close()其中,?le表示打開(kāi)的文件對(duì)象。任務(wù)3
Python不同文件模塊的使用3791.?掌握Python不同文件模塊的用法。2.?熟悉Python不同文件模塊的常用函數(shù)。3.?能使用模塊完成文件打開(kāi)、處理及關(guān)閉等操作。任務(wù)目標(biāo)380一、pickle模塊pickle模塊用于實(shí)現(xiàn)Python對(duì)象的持久化存儲(chǔ)。Python中有一個(gè)序列化過(guò)程叫作pickle,它能實(shí)現(xiàn)任意對(duì)象與文本之間的相互轉(zhuǎn)換,也能實(shí)現(xiàn)任意對(duì)象與二進(jìn)制對(duì)象之間的相互轉(zhuǎn)換。也就是說(shuō),pickle模塊可以實(shí)現(xiàn)Python對(duì)象的存儲(chǔ)及恢復(fù)。pickle模塊是Python的一個(gè)標(biāo)準(zhǔn)模塊,安裝Python的同時(shí)就已經(jīng)安裝了pickle庫(kù),因此它不需要再單獨(dú)安裝,使用import將其導(dǎo)入程序,就可以直接使用。相關(guān)知識(shí)381pickle模塊提供了以下4個(gè)函數(shù)可供使用。1.?dumps函數(shù)dumps函數(shù)用于將Python中的對(duì)象序列化成二進(jìn)制對(duì)象并返回,其語(yǔ)法格式如下。dumps(obj,protocol=None,*,fix_imports=True)各參數(shù)的含義如下。●obj:要轉(zhuǎn)換的Python對(duì)象?!駊rotocol:pickle的轉(zhuǎn)碼協(xié)議,取值為0、1、2、3、4,其中0、1、2對(duì)應(yīng)Python早期的版本,3和4對(duì)應(yīng)Python3.x版本及之后的版本。在未指定的情況下,其值默認(rèn)為3。3822.?loads函數(shù)loads函數(shù)用于讀取給定的二進(jìn)制對(duì)象數(shù)據(jù),并將其轉(zhuǎn)換為Python對(duì)象,其語(yǔ)法格式如下。loads(data,*,fix_imports=True,encoding='ASCII',errors='strict')其中,data表示要轉(zhuǎn)換的二進(jìn)制對(duì)象。3833.?dump函數(shù)dump函數(shù)用于將Python中的對(duì)象序列化成二進(jìn)制對(duì)象,并寫(xiě)入文件,其語(yǔ)法格式如下。dump(obj,file,protocol=None,*,fix_imports=True)各參數(shù)的含義如下。●obj:要序列化的Python對(duì)象?!?le:轉(zhuǎn)換到指定的二進(jìn)制文件中,要求該文件必須是以“wb”打開(kāi)模式進(jìn)行操作?!駊rotocol:和dumps函數(shù)中protocol參數(shù)的含義完全相同,即序列化時(shí)使用的協(xié)議版本。如果未指定,則使用默認(rèn)協(xié)議版本。3844.?load函數(shù)load函數(shù)用于讀取指定的序列化數(shù)據(jù)文件,并返回對(duì)象,其語(yǔ)法格式如下。load(file,*,fix_imports=True,encoding='ASCII',errors='strict')其中,?le表示要轉(zhuǎn)換的二進(jìn)制對(duì)象文件(必須以“rb”打開(kāi)模式操作文件)。以上這4個(gè)函數(shù)可以分成兩類(lèi),其中dumps函數(shù)和loads函數(shù)實(shí)現(xiàn)基于內(nèi)存的Python對(duì)象與二進(jìn)制對(duì)象互轉(zhuǎn);dump函數(shù)和load函數(shù)實(shí)現(xiàn)基于文件的Python對(duì)象與二進(jìn)制對(duì)象互轉(zhuǎn)。385386二、fileinput模塊?leinput模塊用于逐行讀取多個(gè)文件的數(shù)據(jù)。前面學(xué)習(xí)了使用open函數(shù)和read函數(shù)或readline函數(shù)、readlines函數(shù)組合來(lái)讀取單個(gè)文件的數(shù)據(jù),但在某些場(chǎng)景中,可能需要讀取多個(gè)文件的數(shù)據(jù),在這種情況下再使用這些組合,顯然就不合適了。對(duì)此,Python提供了?leinput模塊,通過(guò)該模塊中的input函數(shù),能同時(shí)打開(kāi)指定的多個(gè)文件,還能逐個(gè)讀取這些文件中的內(nèi)容。387?leinput模塊中input函數(shù)的語(yǔ)法格式如下。fileinput.input(files="filename1,filename2,…",inplace=False,backup='',bufsize=0,mode='r',openhook=None)此函數(shù)會(huì)返回一個(gè)?leinput對(duì)象,它可以理解為將多個(gè)指定文件合并之后的文件對(duì)象。各參數(shù)的含義如下。●?les:多個(gè)文件的路徑列表。●inplace:指定是否將標(biāo)準(zhǔn)輸出的結(jié)果寫(xiě)回文件,此參數(shù)默認(rèn)值為False。388●backup:指定備份文件的擴(kuò)展名?!馼ufsize:指定緩沖區(qū)的大小,默認(rèn)為0?!駇ode:打開(kāi)文件的模式,默認(rèn)為r(只讀模式)?!駉penhook:控制文件的打開(kāi)方式,如編碼格式等。注意:和open函數(shù)不同,input函數(shù)不能指定打開(kāi)文件的編碼格式,這意味著使用該函數(shù)讀取的所有文件,除非以二進(jìn)制方式進(jìn)行讀取,否則該文件的編碼格式必須和當(dāng)前操作系統(tǒng)默認(rèn)的編碼格式相同,不然Python解釋器可能提示UnicodeDecodeError錯(cuò)誤。和open函數(shù)返回單個(gè)的文件對(duì)象不同,?leinput對(duì)象無(wú)須調(diào)用類(lèi)似read、readline、readlines這樣的函數(shù),直接通過(guò)for循環(huán)即可按次序讀取多個(gè)文件中的數(shù)據(jù)。389?leinput模塊中提供了很多函數(shù),通過(guò)調(diào)用這些函數(shù),可以更快地實(shí)現(xiàn)想要的功能。fileinput模塊中提供的函數(shù)390三、linecache模塊除了可以借助?leinput模塊實(shí)現(xiàn)讀取文件,Python還提供了linecache模塊。linecache模塊用于隨機(jī)讀取文件指定行。linecache模塊常用來(lái)讀取Python源文件中的代碼,它使用UTF-8編碼格式讀取文件內(nèi)容。因此,使用該模塊讀取的文件,其編碼格式也必須為UTF-8,否則要么讀取出來(lái)的數(shù)據(jù)是亂碼,要么直接讀取失?。≒ython解釋器會(huì)報(bào)SyntaxError異常)。391linecache模塊中常用的函數(shù)見(jiàn)下表。linecache模塊中常用的函數(shù)392四、os.path模塊os.path模塊不僅提供了一些操作路徑字符串的方法,還提供了一些指定文件屬性的方法,os.path模塊常用的函數(shù)見(jiàn)下表。linecache模塊中常用的函數(shù)393linecache模塊中常用的函數(shù)394linecache模塊中常用的函數(shù)任務(wù)4
基于文件操作的異常處理3951.?了解異常的概念。2.?熟悉異常的處理方法和異常的傳遞。3.?掌握try...finally語(yǔ)句的使用方法。4.?能正確進(jìn)行基于文件操作的異常處理。任務(wù)目標(biāo)396一、異常的概念異常就是一個(gè)事件,在程序執(zhí)行過(guò)程中遇到特殊情況時(shí)發(fā)生,幫助定位錯(cuò)誤,了解程序?qū)嶋H運(yùn)行狀況。一般情況下,在Python無(wú)法按正常流程處理時(shí)就會(huì)發(fā)生一個(gè)異常。異常是Python對(duì)象,表示一個(gè)錯(cuò)誤。當(dāng)Python腳本發(fā)生異常時(shí)可以選擇捕獲并處理,若異常超出可處理的范圍且沒(méi)有被捕獲,程序?qū)?huì)終止,防止造成更大的損失。相關(guān)知識(shí)397398二、異
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年-2024年公司項(xiàng)目部負(fù)責(zé)人安全教育培訓(xùn)試題附答案【黃金題型】
- 立秋文化在新媒體的傳播
- 《材料工程原理緒論》課件
- 《監(jiān)督培訓(xùn)材料》課件
- 激光打標(biāo)機(jī)打標(biāo)軟件與PLC通信穩(wěn)定性的研究
- 部編版七年級(jí)歷史下冊(cè)期末復(fù)習(xí)專(zhuān)題課件2024版
- 云安全隱私保護(hù)機(jī)制-洞察分析
- 營(yíng)養(yǎng)產(chǎn)業(yè)可持續(xù)發(fā)展-洞察分析
- 外觀模式可維護(hù)性-洞察分析
- 稀有金屬?lài)?guó)際市場(chǎng)動(dòng)態(tài)-洞察分析
- 倉(cāng)庫(kù)班長(zhǎng)年終總結(jié)
- 組織協(xié)調(diào)方案及措施
- 2024-2029年中國(guó)IP授權(quán)行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 北京市海淀區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期期末英語(yǔ)試題
- 2024年湖北省漢江國(guó)有資本投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 廣州市九區(qū)聯(lián)考2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量監(jiān)測(cè)數(shù)學(xué)試卷(原卷版)
- 西方國(guó)家的量刑建議制度及其比較
- 游戲方案模板
- 幼兒園大班數(shù)學(xué)上學(xué)期期末考試-試題測(cè)試
- 汽車(chē)產(chǎn)品定義 培訓(xùn)課件
- NICU患兒常規(guī)監(jiān)測(cè)和護(hù)理要點(diǎn)
評(píng)論
0/150
提交評(píng)論