Python快速編程入門(第3版) 課件 第7章 文件與數(shù)據(jù)格式化_第1頁
Python快速編程入門(第3版) 課件 第7章 文件與數(shù)據(jù)格式化_第2頁
Python快速編程入門(第3版) 課件 第7章 文件與數(shù)據(jù)格式化_第3頁
Python快速編程入門(第3版) 課件 第7章 文件與數(shù)據(jù)格式化_第4頁
Python快速編程入門(第3版) 課件 第7章 文件與數(shù)據(jù)格式化_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章文件與數(shù)據(jù)格式化《Python快速編程入門(第3版))》學(xué)習(xí)目標(biāo)/Target了解文件,能夠說出計(jì)算機(jī)中文件的完整標(biāo)識和文件分類掌握文件與目錄管理,能夠通過os模塊中的函數(shù)管理計(jì)算機(jī)中的文件與目錄掌握文件的基礎(chǔ)操作,能夠?qū)崿F(xiàn)文件的打開、關(guān)閉、讀寫、定位讀寫的操作學(xué)習(xí)目標(biāo)/Target了解數(shù)據(jù)的分類,能夠區(qū)分一維數(shù)據(jù)、二維數(shù)據(jù)和多維數(shù)據(jù)熟悉多維數(shù)據(jù)的格式,能夠歸納JSON和XML數(shù)據(jù)的特點(diǎn)熟悉數(shù)據(jù)的存儲與讀寫方式,能夠歸納一維數(shù)據(jù)和二維數(shù)據(jù)的存儲方式,以

及實(shí)現(xiàn)一維數(shù)據(jù)和二維數(shù)據(jù)的讀寫操作章節(jié)概述/Summary程序中通常會使用變量保存運(yùn)行時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù),但這些臨時(shí)數(shù)據(jù)在程序結(jié)束后會隨之消失。然而,有些程序中的數(shù)據(jù)需要持久保存,例如游戲程序中的角色屬性數(shù)據(jù)、裝備數(shù)據(jù)、物品數(shù)據(jù)等。那么,有沒有一種方法可以持久保存這些數(shù)據(jù)呢?答案是肯定的,計(jì)算機(jī)可以使用文件持久地保存數(shù)據(jù)。本章將從計(jì)算機(jī)中文件的分類、基礎(chǔ)操作、管理方式與數(shù)據(jù)維度等方面對計(jì)算機(jī)中文件與數(shù)據(jù)格式化的相關(guān)知識進(jìn)行介紹。目錄/Contents010203文件概述文件的基礎(chǔ)操作文件與目錄管理04實(shí)訓(xùn)案例05數(shù)據(jù)維度與數(shù)據(jù)格式化文件概述7.1

先定一個(gè)小目標(biāo)!了解文件,能夠說出計(jì)算機(jī)中文件的完整標(biāo)識和文件分類7.1文件概述在計(jì)算機(jī)中,文件是廣泛應(yīng)用的數(shù)據(jù)存儲方式,它們以硬盤等外部介質(zhì)為載體,在計(jì)算機(jī)內(nèi)部存儲著各種數(shù)據(jù),如文本文檔、圖像、程序、音頻、視頻等。7.1文件概述7.1文件概述計(jì)算機(jī)中的每個(gè)文件也有唯一確定的標(biāo)識,用于識別和引用該文件。文件標(biāo)識由路徑、文件名主干和擴(kuò)展名3個(gè)部分組成,關(guān)于它們的介紹如下。(1)路徑:路徑是文件在計(jì)算機(jī)中的位置表示,用于指明文件所在的目錄結(jié)構(gòu),以幫助操作系統(tǒng)定位文件的具體位置。路徑可以分為相對路徑或絕對路徑,其中相對路徑是相對于當(dāng)前工作目錄或某個(gè)特定目錄的路徑,絕對路徑從根目錄開始完整地指定文件的位置。(2)文件名主干:文件名主干通常是用于描述文件的內(nèi)容、用途或其他相關(guān)信息的字符串,它有助于用戶識別和區(qū)分不同的文件。(3)擴(kuò)展名:擴(kuò)展名是文件名中表示文件類型或格式的部分,用于幫助操作系統(tǒng)和應(yīng)用程序辨識和處理不同種類的文件,通常緊跟在文件名主干之后,以點(diǎn)號進(jìn)行分隔。7.1文件概述在Windows操作系統(tǒng)中,一個(gè)文件的完整標(biāo)識如圖所示。操作系統(tǒng)以文件為單位對數(shù)據(jù)進(jìn)行管理,若想找到存放在外部介質(zhì)上的數(shù)據(jù),必須先按照文件標(biāo)識找到指定的文件,再從文件中讀取數(shù)據(jù)。根據(jù)上圖所示的完整標(biāo)識,用戶可以在Windows操作系統(tǒng)中找到D:\itcast\chapter10路徑下文件名主干為example,擴(kuò)展名為.dat的文件。7.1文件概述1.文本文件文本文件是由字符組成的文件,它包含了可被人類讀取和理解的文本信息。文本文件中的字符可以是字母、數(shù)字、標(biāo)點(diǎn)符號和其他可輸出字符。一般情況下,文本文件以純文本形式存儲,并使用ASCII碼、Unicode或其他字符編碼方式來表示其中的字符。常見的文本文件格式包括TXT、CSV、XML、HTML、JSON等。由于文本文件以可讀的文本形式存儲,其內(nèi)容在計(jì)算機(jī)以及不同操作系統(tǒng)和應(yīng)用程序之間具有良好的可移植性和互操作性。文本文件可以被文本處理工具和編程語言進(jìn)行讀取、寫入和處理,這使得文本文件成為廣泛應(yīng)用于各種場景的通用數(shù)據(jù)存儲格式。7.1文件概述2.二進(jìn)制文件二進(jìn)制文件是由字節(jié)組成的文件,它以二進(jìn)制形式存儲數(shù)據(jù),包含計(jì)算機(jī)能夠直接解讀和處理的信息。二進(jìn)制文件可以包含各種類型的數(shù)據(jù),如圖像、音頻、視頻、可執(zhí)行文件、數(shù)據(jù)庫文件等,這類文件不能直接使用文字處理程序正常讀寫,必須使用關(guān)聯(lián)程序才能正確獲取文件信息。在計(jì)算機(jī)中,二進(jìn)制文件和文本文件這兩種類型是根據(jù)數(shù)據(jù)邏輯存儲結(jié)構(gòu)進(jìn)行劃分的,而非物理存儲結(jié)構(gòu),由于計(jì)算機(jī)中的數(shù)據(jù)都是以二進(jìn)制形式存儲的,所以二進(jìn)制文件和文本文件在物理層面上并沒有區(qū)別。多學(xué)一招:標(biāo)準(zhǔn)文件Python的sys模塊中定義了3個(gè)標(biāo)準(zhǔn)文件,分別為stdin(標(biāo)準(zhǔn)輸入文件)、stdout(標(biāo)準(zhǔn)輸出文件)和stderr(標(biāo)準(zhǔn)錯(cuò)誤文件)。標(biāo)準(zhǔn)輸入文件對應(yīng)輸入設(shè)備,如鍵盤;標(biāo)準(zhǔn)輸出文件和標(biāo)準(zhǔn)錯(cuò)誤文件對應(yīng)輸出設(shè)備,如顯示器。每個(gè)終端都有其對應(yīng)的標(biāo)準(zhǔn)文件,這些文件在終端啟動的同時(shí)打開。在Python解釋器中導(dǎo)入sys模塊后便可對標(biāo)準(zhǔn)文件進(jìn)行操作。以標(biāo)準(zhǔn)輸出文件為例,向該文件中寫入數(shù)據(jù)的示例代碼如下:importsysfile=sys.stdoutfile.write("hello")以上代碼將標(biāo)準(zhǔn)輸出文件賦給文件對象file,又通過文件對象file調(diào)用內(nèi)置方法write()向標(biāo)準(zhǔn)輸出文件寫數(shù)據(jù)。程序執(zhí)行后,字符串“hello”將被寫入標(biāo)準(zhǔn)輸出文件,即輸出到終端。文件的基礎(chǔ)操作7.2

先定一個(gè)小目標(biāo)!7.2.1文件的打開與關(guān)閉掌握文件的基礎(chǔ)操作,能夠?qū)崿F(xiàn)文件的打開與關(guān)閉操作7.2.1文件的打開與關(guān)閉當(dāng)用戶需要對一個(gè)文件進(jìn)行讀取或?qū)懭氩僮鲿r(shí),首先需要將文件打開,建立與該文件的連接,然后在完成操作以后需要將文件關(guān)閉,斷開與文件的連接,以便及時(shí)釋放資源并確保數(shù)據(jù)的完整性。7.2.1文件的打開與關(guān)閉Python中的內(nèi)置函數(shù)open()用于打開文件并返回相應(yīng)的文件對象,該函數(shù)的語法格式如下:open(file,mode='r',buffering=None,encoding=None,errors=None,newline=None,closefd=True)語法格式file:表示接收待打開文件的名稱或路徑。encoding:表示文件的編碼格式。mode:表示文件的打開模式,打開模式的基本取值有r、w、a,這些值也可以與b、+組合使用7.2.1文件的打開與關(guān)閉常用的文件打開模式打開模式名稱描述r/rb讀取/二進(jìn)制讀取模式以只讀的方式打開文本文件/二進(jìn)制文件,若文件不存在或無法找到,則將無法成功打開文件w/wb寫入/二進(jìn)制寫入模式以只寫的方式打開文本文件/二進(jìn)制文件。若文件已經(jīng)存在,則會先清空文件內(nèi)容再寫入新的文本數(shù)據(jù)/二進(jìn)制數(shù)據(jù);若文件不存在,則會創(chuàng)建一個(gè)新的文件a/ab追加/二進(jìn)制追加模式以只寫的方式打開文本文件/二進(jìn)制文件,并在文件末尾追加數(shù)據(jù),而不會清空文件原有的數(shù)據(jù)。若文件不存在,則會創(chuàng)建一個(gè)新的文件r+/rb+讀寫/二進(jìn)制讀寫模式以讀寫的方式打開文本文件/二進(jìn)制文件,允許在文件中進(jìn)行讀取和寫入操作。若文件不存在或無法找到,則將無法成功打開文件w+/wb+讀寫/二進(jìn)制讀寫模式以讀寫的方式打開文本文件/二進(jìn)制文件,允許在文件中進(jìn)行讀取和寫入操作。若文件已經(jīng)存在,則會先清空文件內(nèi)容再進(jìn)行讀取和寫入的操作;若文件不存在,則會創(chuàng)建一個(gè)新的文件a+/ab+追加/二進(jìn)制追加讀寫模式以讀寫的方式打開文本文件/二進(jìn)制文件,允許在文件中進(jìn)行讀取和寫入操作,寫入的數(shù)據(jù)會直接追加到已有數(shù)據(jù)的后面,而不會清空文件原有的數(shù)據(jù)。若文件不存在,則會創(chuàng)建一個(gè)新的文件7.2.1文件的打開與關(guān)閉若open()函數(shù)成功打開文件,則會返回一個(gè)文件對象。打開文件的示例如下:file1=open('E:\\a.txt') #以只讀方式打開E盤的文本文件a.txtfile2=open('b.txt','w') #以只寫方式打開當(dāng)前目錄的文本文件b.txtfile3=open('c.txt','w+') #以讀寫方式打開文本文件c.txtfile4=open('d.txt','wb+') #以讀寫、二進(jìn)制方式打開文本文件d.txt以只讀模式打開文件時(shí),若待打開的文件不存在,則文件會打開失敗,導(dǎo)致程序出現(xiàn)報(bào)錯(cuò)信息。7.2.1文件的打開與關(guān)閉Python中可通過close()方法關(guān)閉文件,也可以使用with語句實(shí)現(xiàn)文件的自動關(guān)閉。下面分別介紹這2種關(guān)閉文件的方式。(1)close()方法close()方法是為文件對象提供的方法,用于關(guān)閉已經(jīng)打開的文件,該方法無需傳入任何參數(shù),直接調(diào)用即可。例如,調(diào)用close()方法關(guān)閉之前打開的文件對象file,具體代碼如下:file.close()

示例7.2.1文件的打開與關(guān)閉(2)with語句當(dāng)操作文件時(shí),如果打開文本與關(guān)閉文件之間的操作較多,我們很容易遺漏關(guān)閉文件操作,為此Python引入with語句預(yù)定義清理操作,實(shí)現(xiàn)文件的自動關(guān)閉。with語句的語法格式如下:withopen(文件路徑,打開模式)as變量名:

代碼塊 示例上述語法格式中,as及其后面的變量名都是可選的。當(dāng)程序執(zhí)行with語句時(shí),首先會調(diào)用open()函數(shù)打開指定路徑下的文件,并將該函數(shù)返回的文件對象賦值給變量,然后執(zhí)行with語句內(nèi)的代碼塊,并在代碼塊執(zhí)行完畢后自動調(diào)用close()方法關(guān)閉已打開的文件。使用with語句可以簡化文件操作的代碼,并確保在任何情況下都會正確關(guān)閉文件。7.2.1文件的打開與關(guān)閉雖然程序執(zhí)行完畢后,系統(tǒng)會自動關(guān)閉由該程序打開的文件,但計(jì)算機(jī)中可打開的文件數(shù)量是有限的,每打開一個(gè)文件,可打開文件數(shù)量就減1。打開的文件占用系統(tǒng)資源,若打開的文件過多,會降低系統(tǒng)性能。當(dāng)文件以緩沖方式打開時(shí),磁盤文件與內(nèi)存間的讀寫并非即時(shí)的,若程序因異常關(guān)閉,可能產(chǎn)生數(shù)據(jù)丟失。因此,編寫代碼時(shí)應(yīng)在程序中主動關(guān)閉不再使用的文件。

先定一個(gè)小目標(biāo)!7.2.2文件的讀寫掌握文件的基礎(chǔ)操作,能夠?qū)崿F(xiàn)文件的讀寫操作7.2.2文件的讀寫1.讀取文件read()方法用于從指定文件中讀取一定數(shù)量的字節(jié)或字符,并將讀取到的數(shù)據(jù)返回。read()方法的語法格式如下:read(size=-1)語法格式以上格式中的參數(shù)size用于指定從文件中讀取數(shù)據(jù)的字節(jié)數(shù)或字符數(shù),默認(rèn)值為-1,說明一次性從文件中讀取所有數(shù)據(jù)。7.2.2文件的讀寫以文件test.txt為例,演示使用read()方法讀取該文件中指定數(shù)量的字符,test.txt文件中的內(nèi)容具體如下:withopen('test.txt')asfile:result=file.read(3)#讀取3個(gè)字符的數(shù)據(jù)

print(result)result=file.read(3)#繼續(xù)讀取3個(gè)字符的數(shù)據(jù)

print(result)result=file.read()#讀取剩余的全部數(shù)據(jù)

print(result) 7.2.2文件的讀寫1.讀取文件readline()方法用于從指定文件中讀取一行數(shù)據(jù),并保留該行數(shù)據(jù)末尾的換行符\n。readline()方法的語法格式如下:readline()語法格式7.2.2文件的讀寫以文件test.txt為例,演示使用read()方法讀取該文件中指定數(shù)量的字符,test.txt文件中的內(nèi)容具體如下:withopen('test.txt')asfile:result=file.readline()#第1次讀取,讀取第一行數(shù)據(jù)

print(result)result=file.readline()#第2次讀取,讀取第二行數(shù)據(jù)

print(result)result=file.readline()#第3次讀取,讀取第三行數(shù)據(jù)

print(result)result=file.readline()#第4次讀取,讀取第四行數(shù)據(jù)

print(result)7.2.2文件的讀寫1.讀取文件readlines()方法用于一次性讀取文件中的所有數(shù)據(jù),若讀取成功返回一個(gè)列表,文件中的每一行對應(yīng)列表中的一個(gè)元素。readlines()方法的語法格式如下:readlines(hint=-1)語法格式以上格式中,參數(shù)hint的單位為字節(jié),它用于控制要讀取的行數(shù),如果行中數(shù)據(jù)的總大小超出了hint指定的字節(jié),readlines()方法將不會繼續(xù)讀取文件,返回的列表中的行數(shù)可能會少于hint指定的行數(shù)。以文件test.txt文件為例,演示使用readlines()方法讀取該文件的所有數(shù)據(jù),示例代碼如下:withopen('test.txt')asfile:print(file.readlines())#使用readlines()方法讀取所有的數(shù)據(jù)7.2.2文件的讀寫7.2.2文件的讀寫read()和readlines()方法都可一次讀取文件中的全部數(shù)據(jù),但這兩種操作可能會引起內(nèi)存問題。因?yàn)橛?jì)算機(jī)的內(nèi)存是有限的,若文件較大,read()和readlines()的一次讀取便會耗盡系統(tǒng)內(nèi)存,這顯然是不可取的。為了保證讀取安全,通常會采用read(size)方法,通過多次調(diào)用read()方法每次讀取size個(gè)字節(jié)或字符。7.2.2文件的讀寫2.寫入文件(1)write()方法write()方法可以將字符串寫入文件,其語法格式如下:write(data)語法格式以上格式中的參數(shù)data表示要寫入文件的數(shù)據(jù),若數(shù)據(jù)寫入成功,write()方法會返回本次寫入文件數(shù)據(jù)的字節(jié)數(shù)或字符數(shù)。使用write()方法向write_file.txt文件中寫入數(shù)據(jù),示例代碼如下:string="Nothingintheworldisdifficult"\"foronewhosetshismindtoit."withopen('write_file.txt',mode='w')asfile:size=file.write(string)#向文件中寫入數(shù)據(jù)

print(size)#輸出字符數(shù)7.2.2文件的讀寫7.2.2文件的讀寫2.寫入文件(2)writelines()方法writelines()方法用于將字符串或包含字符串的列表寫入文件,其語法格式如下:writelines(lines)語法格式以上格式中的參數(shù)lines表示要寫入文件中的數(shù)據(jù),該參數(shù)可以是一個(gè)字符串或字符串列表。需要說明的是,若寫入文件的數(shù)據(jù)在文件中需要換行,應(yīng)顯式插入換行符。使用writelines()方法向文件write_file.txt中寫入數(shù)據(jù),示例代碼如下:string_list=["Hereweareall,byday;\n","bynightwe'rehurl'dBydreams,\n","eachoneintoaseveralworld."]withopen('write_file.txt',mode='w')asfile:file.writelines(string_list)7.2.2文件的讀寫多學(xué)一招:函數(shù)的嵌套定義文本文件支持多種編碼方式,不同編碼方式下字符與字節(jié)的對應(yīng)關(guān)系不同,常見的編碼方式以及字符與字節(jié)的對應(yīng)關(guān)系如表所示。編碼方式語言字符數(shù)字節(jié)數(shù)ASCII中文1/英文11UTF-8中文13或4英文11UTF-16中文12英文12UTF-32中文14英文14GBK中文12英文11

先定一個(gè)小目標(biāo)!7.2.3文件的定位讀寫掌握文件的基礎(chǔ)操作,能夠?qū)崿F(xiàn)文件的定位讀寫操作7.2.3文件的定位讀寫每個(gè)文件對象都有一個(gè)稱為“讀寫指針”的屬性,該屬性用于記錄當(dāng)前的讀寫位置,默認(rèn)值為0,即文件讀寫位置默認(rèn)在文件開頭位置。Python中提供了一些獲取與修改文件讀寫位置的方法,以實(shí)現(xiàn)文件的定位讀寫。7.2.3文件的定位讀寫(1)tell()方法tell()方法用于獲取文件當(dāng)前的讀寫位置,該方法會返回一個(gè)表示文件讀寫位置的整數(shù),這個(gè)整數(shù)是以字節(jié)為單位。例如,當(dāng)程序從文件開頭位置讀取了3個(gè)英文字符后,通過tell()方法獲取的文件讀寫位置為3,說明文件讀寫位置當(dāng)前位于從文件開頭偏移3個(gè)字節(jié)的位置。以操作文件write_file.txt為例,演示通過tell()方法獲取當(dāng)前的文件讀寫位置,具體代碼如下:withopen('write_file.txt')asfile:read_location=file.tell()#獲取文件讀寫位置

print(read_location)file.read(5)#通過read()方法讀取數(shù)據(jù),移動文件讀寫位置

read_location=file.tell()#再次獲取文件讀寫位置

print(read_location)示例7.2.3文件的定位讀寫定位讀寫的示例2.seek()方法Python中提供了seek()方法,該方法用于移動文件讀寫位置到指定的位置,以便用戶能夠從任意位置開始讀寫文件。seek()方法的語法格式如下:seek(offset,

whence=os.SEEK_SET,

/)語法格式offset:表示偏移量,即文件讀寫位置需要移動的字節(jié)數(shù),它的取值可以為正數(shù)、負(fù)數(shù)或0,其中正數(shù)表示相對于指定位置向文件末尾移動的字節(jié)數(shù),負(fù)數(shù)表示相對于指定位置向文件開頭移動的字節(jié)數(shù),0表示不移動,即保持位置不變。from:指定偏移量的參考位置,該參數(shù)支持的取值及其代表的含義分別如下。os.SEEK_SET或0:默認(rèn)值,表示從文件開頭位置開始偏移。os.SEEK_CUR或1:表示從當(dāng)前位置開始偏移。os.SEEK_END或2:表示從文件末尾位置開始偏移。以操作文件write_file.txt為例,演示通過seek()移動文件讀寫位置,具體代碼如下:withopen('write_file.txt')asfile:read_location=file.seek(5,0)#從文件開頭移動5個(gè)字節(jié)

print(read_location)#輸出當(dāng)前的文件讀寫位置

result=file.read(3)#讀取3個(gè)字符的數(shù)據(jù)

print(result)7.2.3文件的定位讀寫當(dāng)使用seek()方法操作文本文件時(shí),只能在from參數(shù)值為0的情況下從文件的開頭位置移動文件的讀寫位置,而不能在from參數(shù)值為1或2的情況下進(jìn)行相對移動,這樣會導(dǎo)致程序出現(xiàn)錯(cuò)誤。示例代碼如下:withopen('write_file.txt')asfile: #打開文本文件

read_location=file.seek(5,0)#從文件開頭移動5個(gè)字節(jié)

print(read_location)read_location=file.seek(-3,2)#從文件結(jié)尾向前移動3個(gè)字節(jié)

print(read_location)7.2.3文件的定位讀寫若要相對當(dāng)前讀寫位置或文件末尾移動文件讀寫位置,則需要以二進(jìn)制形式打開文件,示例代碼如下:withopen('write_file.txt','rb')asfile:#以二進(jìn)制形式打開文件

read_location=file.seek(5,0)#從文件開頭移動5個(gè)字節(jié)

print(read_location)read_location=file.seek(-3,2)#從文件結(jié)尾向前移動3個(gè)字節(jié)

print(read_location)7.2.3文件的定位讀寫文件與目錄管理7.3

先定一個(gè)小目標(biāo)!7.3文件與目錄管理掌握文件與目錄管理,能夠通過os模塊中的函數(shù)管理計(jì)算機(jī)中的文件與目錄對于用戶而言,文件和目錄以不同的形式展現(xiàn),但對計(jì)算機(jī)而言,目錄是文件屬性信息的集合,它本質(zhì)上也是一種文件。除Python的內(nèi)置方法外,os模塊中也定義了與文件操作相關(guān)的函數(shù),利用這些函數(shù)可以實(shí)現(xiàn)刪除文件、文件重命名、創(chuàng)建或刪除目錄、獲取當(dāng)前目錄、更改默認(rèn)目錄與獲取目錄列表等操作。7.3文件與目錄管理1.刪除文件—remove()函數(shù)os模塊中的remove()函數(shù)用于刪除指定路徑下的文件,若待刪除的文件不存在,則會導(dǎo)致程序報(bào)錯(cuò)。remove()函數(shù)的語法格式如下:7.3文件與目錄管理remove(path)語法格式path:表示待刪除文件的路徑,取值可以為絕對路徑或相對路徑,若該參數(shù)只傳入一個(gè)文件的名稱,則表明刪除當(dāng)前目錄下指定名稱的文件。使用remove()函數(shù)刪除文件a.txt的示例importosos.remove('a.txt')使用remove()函數(shù)刪除文件a.txt的示例2.文件重命名—rename()函數(shù)使用os模塊中的rename()函數(shù)可以重命名目錄或文件的名稱,該函數(shù)要求目標(biāo)目錄或文件必須存在,不存在會導(dǎo)致程序報(bào)錯(cuò)。rename()函數(shù)的語法格式如下:7.3文件與目錄管理rename(src,dst,*,src_dir_fd=None,dst_dir_fd=None)語法格式src:表示舊的目錄名或文件名。dst:表示新的目錄名或文件名。src_dir_fd:表示舊目錄或文件所在的文件描述符。dst_dir_fd:表示新目錄或文件所在的文件描述符,如果指定了此參數(shù),則會將dst視為dst_dir_fd指定目錄的相對路徑。importosos.rename('a.txt','test.txt')使用rename()函數(shù)重命名文件a.txt的示例3.創(chuàng)建或刪除目錄—mkdir()或rmdir()函數(shù)os模塊中的mkdir()可以創(chuàng)建目錄,rmdir()函數(shù)可以刪除目錄,這兩個(gè)函數(shù)都必須傳入一個(gè)目錄名。例如,使用mkdir()函數(shù)創(chuàng)建名稱為dir的目錄,具體代碼如下:7.3文件與目錄管理importosos.rmdir('dir')經(jīng)以上操作后,當(dāng)前路徑下增加了一個(gè)名稱為dir的目錄。需要注意的是,待創(chuàng)建的目錄不能與已有目錄重名,否則將創(chuàng)建失敗。例如,使用rmdir()函數(shù)刪除名稱為dir的目錄,具體代碼如下:os.rmdir('dir')4.獲取當(dāng)前目錄—getcwd()函數(shù)當(dāng)前目錄即Python當(dāng)前的工作路徑。os模塊中的getcwd()函數(shù)用于獲取當(dāng)前目錄,調(diào)用該函數(shù)可獲取當(dāng)前工作目錄的絕對路徑。示例代碼如下:7.3文件與目錄管理result=os.getcwd()print(result)5.更改默認(rèn)目錄—chdir()函數(shù)os模塊中的chdir()函數(shù)用于更改默認(rèn)目錄。若對文件或文件夾進(jìn)行操作時(shí)傳入的是文件名而非路徑名,Python解釋器會從默認(rèn)目錄中查找指定文件,或在默認(rèn)目錄下創(chuàng)建新的文件。若沒有特別設(shè)置,當(dāng)前目錄即為默認(rèn)目錄。使用chdir()函數(shù)更改默認(rèn)目錄為“E:\”,再次使用getcwd()函數(shù)獲取當(dāng)前目錄,示例代碼如下:7.3文件與目錄管理importosos.chdir('E:\\')#更改默認(rèn)目錄result=os.getcwd()#獲取當(dāng)前目錄print(result)6.獲取文件名列表—listdir()函數(shù)實(shí)際應(yīng)用中常常需要先獲取指定目錄下的所有文件,再對目標(biāo)文件進(jìn)行相應(yīng)操作。os模塊中提供了listdir()函數(shù),使用該函數(shù)可方便快捷地獲取指定目錄下所有文件的文件名列表。例如,獲取當(dāng)前目錄下的所有文件列表,具體代碼如下:7.3文件與目錄管理importosdirs=os.listdir('./') #獲取文件名列表print(dirs)實(shí)訓(xùn)案例7.4

先定一個(gè)小目標(biāo)!7.4.1信息安全策略——文件備份根據(jù)任務(wù)描述實(shí)現(xiàn)案例:信息安全策略——文件備份當(dāng)今是信息時(shí)代,信息在當(dāng)今社會占據(jù)的地位不言而喻,信息安全更是當(dāng)前人們重視的問題之一。人們考慮從傳輸和存儲2個(gè)方面來保障信息的安全,備份是在存儲工作中保障信息安全的有效方式。本案例要求編寫程序,根據(jù)用戶輸入的要備份的目錄或文件,實(shí)現(xiàn)一個(gè)具有備份文件與目錄功能的備份工具。備份工具的具體要求如下:(1)如果用戶輸入的備份目錄不存在,則會創(chuàng)建該目錄后再進(jìn)行文件備份操作;如果用戶輸入的備份目錄存在,則會直接進(jìn)行文件備份操作。(2)如果用戶輸入的備份目錄是一個(gè)文件夾,則遍歷該文件夾下的所有文件并逐個(gè)備份。(3)如果用戶輸入的備份文件存在,則會直接在該文件中進(jìn)行備份操作,否則提示用戶備份的文件不存在,并退出程序。(4)備份操作是將源文件內(nèi)容逐行復(fù)制到新文件中,保存在備份目錄下,并以原文件名命名新文件。7.4.1信息安全策略——文件備份

先定一個(gè)小目標(biāo)!根據(jù)任務(wù)描述實(shí)現(xiàn)案例:用戶賬戶管理7.4.2用戶賬戶管理現(xiàn)如今,許多網(wǎng)站要求訪問者在訪問網(wǎng)站內(nèi)容之前進(jìn)行登錄;若訪問者沒有該網(wǎng)站的賬號,則需要先進(jìn)行注冊。注冊后,網(wǎng)站的服務(wù)器會保存賬號信息,以便訪問者下次訪問時(shí)可根據(jù)保存的信息驗(yàn)證身份。為了保障賬戶安全,訪問者應(yīng)定期修改密碼;若決定不再訪問此網(wǎng)站,可以選擇注銷賬戶。作為網(wǎng)絡(luò)環(huán)境的一員,我們需要加強(qiáng)自身信息安全意識,提高密碼的復(fù)雜度和使用頻率,定期更換和更新密碼,從而保障在網(wǎng)絡(luò)上的信息安全。本案例要求編寫一個(gè)用戶賬戶管理程序,使用文件存儲用戶的賬戶信息。用戶賬戶管理程序的具體要求如下。7.4.2用戶賬戶管理(1)開始使用用戶賬戶管理程序時(shí)提供一個(gè)功能菜單,便于提示用戶程序具有哪些功能。(2)用戶賬戶管理程序總共有5個(gè)功能,用戶可以根據(jù)需要輸入相應(yīng)的編號選擇相應(yīng)的功能。如果用戶選擇退出功能,則會直接退出程序,否則可以重復(fù)選擇相應(yīng)的功能。用戶注銷:接收用戶輸入的要注銷的用戶名和密碼,依次判斷用戶名與密碼是否正確,如果都正確則將該用戶信息從文件中刪除,輸出注銷成功的提示信息,否則輸出用戶不存在或者密碼不正確的提示信息。7.4.2用戶賬戶管理修改密碼:接收用戶輸入的用戶名和舊密碼,依次判斷用戶名和密碼是否正確,如果都正確則要求用戶輸入新密碼,并將修改后的用戶信息保存到文件中;如果用戶名或者密碼不正確,則輸出用戶名或密碼不正確的提示信息。用戶注冊:接收用戶輸入的名稱,判斷用戶輸入的名稱是否已經(jīng)存在,如果存在,則輸出用戶已注冊的提示信息;如果不存在,則繼續(xù)接收用戶輸入的密碼,并將用戶名和密碼保存到文件中。用戶登錄:接收用戶輸入的名稱和密碼,依次判斷用戶名與密碼是否正確,如果都正確則輸出登錄成功的提示信息,否則輸出用戶名或密碼不正確的提示信息。7.4.2用戶賬戶管理數(shù)據(jù)維度與數(shù)據(jù)格式化7.5

先定一個(gè)小目標(biāo)!了解數(shù)據(jù)的分類,能夠區(qū)分一維數(shù)據(jù)、二維數(shù)據(jù)和多維數(shù)據(jù)7.5.1基于維度的數(shù)據(jù)分類從廣義上講,維度是描述事物之間聯(lián)系的概念數(shù)量,根據(jù)這些聯(lián)系的數(shù)量,事物可以被分為不同的維度。例如,長度是與線有聯(lián)系的概念,因此線是一維事物;長度和寬度是與長方形面積有聯(lián)系的概念,因此面積為二維事物;長度、寬度和高度是與長方體體積有聯(lián)系的概念,因此體積為三維事物。7.5.1基于維度的數(shù)據(jù)分類1.一維數(shù)據(jù)一維數(shù)據(jù)是一組具有對等關(guān)系的線性數(shù)據(jù),類似于數(shù)學(xué)中的集合和一維數(shù)組。Python中可以使用一維列表、一維元組和一維集合表示一維數(shù)據(jù)。一維數(shù)據(jù)的各個(gè)元素可以通過逗號、空格等符號進(jìn)行分隔。7.5.1基于維度的數(shù)據(jù)分類2.二維數(shù)據(jù)二維數(shù)據(jù)是具有兩個(gè)關(guān)聯(lián)參數(shù)的數(shù)據(jù)集合,類似于數(shù)學(xué)中的矩陣和二維數(shù)組。Python中可以使用二維列表、二維元組等數(shù)據(jù)類型表示二維數(shù)據(jù)。表格是日常生活中比較常見的二維數(shù)據(jù)組織形式,因此二維數(shù)據(jù)也常被稱為表格數(shù)據(jù)。高三一班期中考試的成績表就是一種表格數(shù)據(jù),如圖所示。3.多維數(shù)據(jù)多維數(shù)據(jù)利用鍵值對等簡單的二元關(guān)系展示數(shù)據(jù)間的復(fù)雜結(jié)構(gòu),Python中可以使用字典表示多維數(shù)據(jù)。多維數(shù)據(jù)在網(wǎng)絡(luò)應(yīng)用中非常常見,計(jì)算機(jī)中常見的多維數(shù)據(jù)格式有HTML(HyperTextMarkupLanguage,超文本標(biāo)記語言)、JSON(JavaScriptObjectNotation,JS對象簡譜)等。例如,使用JSON格式描述高三一班期中考試的成績,具體如下所示:7.5.1基于維度的數(shù)據(jù)分類"高三一班考試成績":[{"姓名":"小紅","語文":"124","數(shù)學(xué)":"137","英語":"145","理綜":"260"};{"姓名":"小明","語文":"116","數(shù)學(xué)":"143","英語":"139","理綜":"263"};……]

先定一個(gè)小目標(biāo)!熟悉數(shù)據(jù)的存儲與讀寫方式,能夠歸納一維數(shù)據(jù)和二維數(shù)據(jù)的存儲方式,以及實(shí)現(xiàn)一維數(shù)據(jù)和二維數(shù)據(jù)的讀寫操作7.5.2一維數(shù)據(jù)和二維數(shù)據(jù)的存儲與讀寫1.數(shù)據(jù)存儲數(shù)據(jù)通常存儲在文件中。為了方便后續(xù)的讀寫操作,數(shù)據(jù)通常需要按照約定的組織方式進(jìn)行存儲。一維數(shù)據(jù)呈線性排列,一般用特殊字符分隔,具體示例如下。使用空格分隔:成都杭州重慶武漢蘇州西安天津使用逗號分隔:成都,杭州,重慶,武漢,蘇州,西安,天津使用&分隔:成都&杭州&重慶&武漢&蘇州&西安&天津由此可見,在存儲一維數(shù)據(jù)時(shí)可使用不同的特殊字符分隔數(shù)據(jù)元素,但有以下幾點(diǎn)需要注意。(1)同一文件或同組文件一般使用同一種分隔符分隔。(2)分隔數(shù)據(jù)的分隔符不應(yīng)出現(xiàn)在數(shù)據(jù)中。(3)分隔符為英文半角符號,一般不使用中文符號作為分隔符。7.5.2一維數(shù)據(jù)和二維數(shù)據(jù)的存儲與讀寫二維數(shù)據(jù)可視為多個(gè)一維數(shù)據(jù)的集合,當(dāng)二維數(shù)據(jù)只有一個(gè)元素時(shí),這個(gè)二維數(shù)據(jù)被視為一維數(shù)據(jù)。國際上通用的一維數(shù)據(jù)和二維數(shù)據(jù)存儲格式為CSV(Comma-SeparatedValue,逗號分隔值)。CSV文件以純文本形式存儲表格數(shù)據(jù),文件的每一行對應(yīng)表格中的一條數(shù)據(jù)記錄,每條記錄由一個(gè)或多個(gè)字段組成,字段之間使用逗號(英文、半角)分隔。因?yàn)樽侄沃g可能使用除逗號外的其他分隔符,所以CSV也稱為字符分隔值。具體示例如下:7.5.2一維數(shù)據(jù)和二維數(shù)據(jù)的存儲與讀寫姓名,語文,數(shù)學(xué),英語,理綜小紅,124,137,145,260小明,116,143,139,263小白,120,130,148,255小蘭,115,145,131,240小剛,123,108,121,235小華,132,100,112,2102.數(shù)據(jù)讀取計(jì)算機(jī)中采用CSV格式存儲的數(shù)據(jù)其文件后綴名一般為.csv,此種文件在Windows平臺上,可通過辦公軟件Excel或記事本打開。例如,將以上示例中CSV格式的數(shù)據(jù)存儲到當(dāng)前路徑下的score.csv文件中,之后通過Python程序讀取該文件中的數(shù)據(jù)并以列表形式輸出,具體代碼如下:7.5.2一維數(shù)據(jù)和二維數(shù)據(jù)的存儲與讀寫csv_file=open('score.csv')lines=[]forlineincsv_file:line=line.replace('\n',‘’)lines.append(line.split(','))print(lines)csv_file.close()3.數(shù)據(jù)寫入將一維數(shù)據(jù)、二維數(shù)據(jù)寫入文件中,即按照數(shù)據(jù)的組織形式,在文件中添加新的數(shù)據(jù)。在保存學(xué)生成績的文件score.csv中寫入每名學(xué)生的總分,具體如下:7.5.2一維數(shù)據(jù)和二維數(shù)據(jù)的存儲與讀寫csv_file=open('score.csv')file_new=open('count.csv','w+')lines=[]forlineincsv_file:line=line.replace('\n','')lines.append(line.split(','))lines[0].append('總分’)#添加表頭字段foriinrange(len(lines)-1):#添加總分idx=i+1sun_score=0forjinrange(len(lines[i

溫馨提示

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

評論

0/150

提交評論