Python程序設(shè)計項目化教程- 課件 項目八 簡易通訊錄-文件操作_第1頁
Python程序設(shè)計項目化教程- 課件 項目八 簡易通訊錄-文件操作_第2頁
Python程序設(shè)計項目化教程- 課件 項目八 簡易通訊錄-文件操作_第3頁
Python程序設(shè)計項目化教程- 課件 項目八 簡易通訊錄-文件操作_第4頁
Python程序設(shè)計項目化教程- 課件 項目八 簡易通訊錄-文件操作_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目八簡易通訊錄——文件操作textbook教材Python程序設(shè)計項目化教程孫海洋

編著

電子工業(yè)出版社ISBN:9787121477546項目描述【項目描述】設(shè)計制作一個簡易通訊錄程序,實現(xiàn)對聯(lián)系人相關(guān)信息的增刪改查等操作。Contents目錄01.靈活進行文件目錄管理——初識文件和目錄02.錄入學(xué)生信息——寫入操作03.讀取學(xué)生信息——讀取操作05.項目小結(jié)04.項目實施PartOne靈活進行文件目錄管理——初識文件和目錄掌握文件和目錄的基本概念掌握對目錄的常見操作【任務(wù)描述】使用shutil.copytree函數(shù)復(fù)制整個目錄樹,并源目錄和目標(biāo)目錄下的所有條目。文件文件三要素:文件路徑、文件名和后綴如何在Python中表示該文件的標(biāo)識呢?格式一:使用原生串(推薦方式)【注意】Python中通常在表示文件標(biāo)識的字符串前加r或R,表示原始字符串(原生串),以避免對路徑中包含的'\t'、'\b'、'\n'等進行轉(zhuǎn)義。如:r"D:\Project_8\task1\data.txt"其中,r"D:\Project_8\task1\"為文件路徑,data為文件名稱,.txt為文件擴展名即后綴。格式二:使用'/'作為路徑分隔符

如"D:/Project_8/task1/data1.txt"格式三:使用'\\'作為路徑分隔符

如"D:\\Project_8\\task1\\data2.txt"目錄及文件操作1.獲取當(dāng)前(工作)目錄—os.getcwd()方法【原型】os.getcwd()2.判斷目錄是否存在—os.path.exists()方法【原型】os.path.exists(path)

【功能描述】若傳入的path存在,則返回True,否則,返回False。目錄及文件操作3.創(chuàng)建目錄—os.mkdir()方法【原型】os.mkdir(path,mode=0o777,*,dir_fd=None)

【功能描述】創(chuàng)建名為path的單級目錄,如果目錄已經(jīng)存在,則會拋出FileExistsError異常。如果路徑中的父目錄不存在,則會拋出FileNotFoundError異常。只需傳入path參數(shù)?!臼纠緿盤根目錄下不存在Python_test目錄,則創(chuàng)建該目錄。目錄及文件操作4.創(chuàng)建多級目錄—os.makedirs()方法【原型】os.makedirs(name,mode=0o777,exist_ok=False)

【功能描述】遞歸創(chuàng)建多級目錄,若目錄已存在,則創(chuàng)建時拋出異常。5.刪除非空目錄—os.rmdir()方法【原型】os.rmdir(path,*,dir_fd=None)【功能描述】刪除某個存在的且為空(該目錄下不存在文件)的目錄路徑。如果待刪除目錄不存在,則拋出FileNotFoundError異常。如果待刪除目錄非空,則拋出OSError異常。目錄及文件操作6.刪除目錄樹—shutil.rmtree()方法【原型】shutil.rmtree(path,ignore_errors=False,onerror=None,*,dir_fd=None)【功能描述】若path目錄存在,則刪除path整個目錄樹。7.更改當(dāng)前目錄—os.chdir()方法【原型】os.chdir(path)【功能描述】將當(dāng)前工作目錄更改為指定路徑。目錄及文件操作8.復(fù)制目錄樹—shutil.copytree()方法【原型】shutil.copytree(src,dst,symlinks=False,ignore=None,copy_function=copy2,ignore_danging_symlinks=False,dirs_exist_ok=False)【功能描述】以src為根的整個目錄樹復(fù)制到名為dst的目錄中,并返回目標(biāo)目錄。若目標(biāo)目錄dst已存在,則調(diào)用該函數(shù)時會拋出異常。9.獲取文件名列表—os.listdir()方法【原型】os.listdir(path='.')【功能描述】返回一個目錄列表,其中包含按路徑給定目錄中的條目名稱。目錄及文件操作10.重命名文件或文件夾—os.rename()【原型】os.rename(src,dst,*,src_dir_fd=None,dst_dir_fd=None)【功能】將文件或目錄src重命名為dst。若存在dst,則操作將失敗。用os.rename()不僅可以修改文件名,還可以修改文件夾名?!臼纠啃薷囊汛嬖诘奈募鹍ata.txt為price.txt運行結(jié)果如下:任務(wù)實施本機運算結(jié)果如下:檢查提供的路徑是否存在導(dǎo)入shutil模塊,用于執(zhí)行目錄復(fù)制操作PartTwo錄入學(xué)生信息——寫入操作掌握文件的打開和關(guān)閉操作能夠?qū)崿F(xiàn)文件寫入操作【任務(wù)描述】實現(xiàn)向文件中寫入若干學(xué)生信息的功能。文件打開與關(guān)閉方法1.方式一open-close打開文件open【原型】open(filename,mode,encoding=None)【說明】若當(dāng)前目錄下該文件不存在,則新建該名字的空文件,而不會拋出FileNotFoundError異常。文件名稱。編碼格式,避免解碼錯誤設(shè)為utf-8格式。文件操作模式,常見模式有r(只讀)、w(只寫入等關(guān)閉文件close【原型】close()【功能描述】通常與open函數(shù)配合使用,用于關(guān)閉打開的文件,調(diào)用格式為:fileObj.close()【說明】以默認(rèn)只讀r方式打開,若文件不存在,則拋出FileNotFoundError異常文件打開和關(guān)閉2.方式二withopenas結(jié)構(gòu)【結(jié)構(gòu)】【說明】該結(jié)構(gòu)無須顯式調(diào)用close關(guān)閉文件,執(zhí)行完該結(jié)構(gòu),文件將關(guān)閉并釋放系統(tǒng)資源?!臼纠恳灾蛔x的方式打開當(dāng)前目錄下的文件sale.txt。文件寫入方法write()方法【原型】write(text,/),【調(diào)用格式】f.write(text)【功能描述】把字符串寫入文件,返回寫入字符串的長度。text只能是字符串,不能為字符串序列?!景咐?】運行上述代碼輸出12,表示寫入字符串的長度?!景咐?】若把若干數(shù)據(jù)寫入到當(dāng)前目錄下的test.txt中,只能一行一行寫文件寫入方法writelines()方法【原型】writelines(lines,/),【調(diào)用格式】f.writelines(lines)【功能描述】向文件中寫入多行文本?!臼纠块喿x以下程序,分析寫入文件的內(nèi)容及格式。【分析】列表ls中存儲的是待寫入文件的字符串列表,writelines每寫入一個串后并不會自動加換行符,故如需換行,要主動添加\n。任務(wù)實施將學(xué)生姓名和學(xué)生學(xué)號追加寫入文件,后面跟一個空格。將學(xué)生成績追加寫入文件,后面跟一個換行符如果用戶選擇添加學(xué)生(輸入'1'),則調(diào)用add函數(shù)。選擇刪除學(xué)生(輸入’2')、選擇修改學(xué)生(輸入'3'),當(dāng)前什么也不做(pass語句表示空操作)。任務(wù)實施檢查目錄d是否存在,如果不存在,則使用os.mkdir創(chuàng)建它。構(gòu)建存儲學(xué)生信息的文件的完整路徑。任務(wù)實施運行結(jié)果如圖:PartThree讀取學(xué)生信息——讀取操作掌握文件的打開和關(guān)閉操作能夠?qū)崿F(xiàn)文件讀取操作【任務(wù)描述】從文件中讀取相關(guān)學(xué)生信息并輸出。文件讀取方法1.read(size)方法調(diào)用格式:f.read(size)【功能描述】1.讀取并返回文件中的數(shù)據(jù)。2.在文本模式下返回字符串,在二進制模式下返回字節(jié)對象。4.當(dāng)size省略或為負(fù)值時,讀取整個文件。5.如果已經(jīng)到達文件的末尾,則f.read()將返回一個空字符串("")2.readline()方法

調(diào)用格式:f.readline()【功能描述】1.讀取文件的一行,包含換行符\n。2.若返回空字符串則表示文件末尾。3.空行由“\n”表示,該字符串只包含一個換行符。讀取操作【案例】使用readline讀取并輸出D:\Data\data.txt文件中的信息,如圖所示。操作步驟:使用with-open-as結(jié)構(gòu)打開文件。→循環(huán)讀取,使用len判斷文件結(jié)束?!褂胷strip去除行尾換行符。→輸出處理后的數(shù)據(jù)。參考代碼1:參考代碼2:3.readlines()方法【原型】readlines(hint=-1,/)【功能描述】默認(rèn)一次性讀取并返回文件中所有行的字符串列表。其中列表中的每個元素代表文件的一行對應(yīng)字符串。readlines(-1)或readlines(0)表示讀取文件的所有行,如果文件總字節(jié)數(shù)是hint值的整數(shù)倍,則返回讀取行數(shù)等于總字節(jié)數(shù)/hint;否則,返回讀取行數(shù)等于總字節(jié)數(shù)/hint的整數(shù)值+1?!臼纠渴褂胷eadlines讀取并輸出D:\Data\data.txt文件中的信息,如圖所示。讀取操作任務(wù)實施show函數(shù)用于顯示存儲在文件中的所有學(xué)生信息。它首先打印標(biāo)題,然后讀取文件中的每一行,使用split()按空格分割每行以獲取學(xué)生的姓名、學(xué)號和成績,并打印出來。任務(wù)實施任務(wù)實施運行結(jié)果如下:PartFour項目實施項目實施add函數(shù)用于添加新的聯(lián)系人信息。它首先打印分隔線,然后打開一個文件用于寫入,接著提示用戶輸入聯(lián)系人的姓名、電話、性別和描述,并將這些信息寫入文件,每項信息之間用空格分隔。show函數(shù)用于顯示文件中所有聯(lián)系人的信息。它打印分隔線和標(biāo)題,然后讀取文件中的每一行,并顯示出來。項目實施遍歷所有行,如果行中包含用戶輸入的姓名,則將該行添加到result列表中。若result列表不為空,即找到匹配的聯(lián)系人,打印標(biāo)題行。遍歷result列表中的每個聯(lián)系人,將聯(lián)系人信息按空格分割成列表s。項目實施初始化兩個列表,ls_keep用于存儲不需要刪除的行,ls_del用于存儲需要刪除的行。遍歷所有行,如果行包含用戶輸入的姓名,則添加到ls_del列表中,否則添加到ls_keep列表中。如果ls_del列表為空,表示沒有找到要刪除的聯(lián)系人,打印提示信息。如果找到了要刪除的聯(lián)系人,以寫入模式打開文件,并將ls_keep列表中的行寫回文件,實現(xiàn)刪除操作。項目實施遍歷每行,如果行中不包含用戶指定的姓名,則將其添加到ls_keep列表中。否則打印分割線等提示,并將當(dāng)前行按空格分割成單獨的信息項從分割后的列表中分別提取姓名、電話、性別和描述。根據(jù)用戶選擇,提示用戶輸入新的信息項,并更新相應(yīng)的變量。項目實施將修改后的信息重新組合成一行字符串并輸出,同時將修改后的信息添加到ls_keep列表中。項目實施項目實施【運行結(jié)果1】添加操作項目實施【運行結(jié)果2】查詢操作項目實施【運行結(jié)果3】刪除操作項目實施【運行結(jié)果4】修改操作PartFive項目小結(jié)項目小結(jié)知

點示

例說

明目錄管理獲取當(dāng)前目錄:os.getcwd()方法importosos.getcwd()判斷目錄是否存在:os.path.exists()方法返回True或False創(chuàng)建目錄:os.mkdir()方法若目錄已存在則會拋出異常,故使用os.path.exists(path)先行判斷再創(chuàng)建創(chuàng)建多級目錄:os.makedirs()方法創(chuàng)建多級目錄,若目錄已存在,則創(chuàng)建時拋出異常刪除非空目錄:os.rmdir()方法刪除目錄樹:shutil.rmtree()方法復(fù)制目錄樹:shutil.copytree()方法shutil.copytree(src,dst)將src目錄樹復(fù)制到dst目錄中,若dst已存在,則拋出FileExistsError異常更改當(dāng)前目錄:os.chdir()方法獲取文件名列表:os.listdir()方法os.listdir(path='.')返回一個列表,其中包含指定目錄中的條目名稱重命名文件(夾):os.rename()方法項目小結(jié)知識點示例說明文件打開與關(guān)閉f=open(file,mode,encoding=None)#文件操作f.close()

mode:打開模式二進制模式:b,如'rb'encoding通常設(shè)為'utf-8'文件打開模式默認(rèn)文本模式,二進制模式加b單一模式:只讀('r'),覆蓋寫('w'),追加寫('a')讀寫模式:'r+'、'w+'、'a+'二進制模式:加b,如'rb+'不支持'rw'、'ra'等模式withopen()as

操作文件withopen('f.txt','w',encoding='utf-8')asf:

f.write('Hello,world.\n')使用該結(jié)構(gòu)無須再顯式調(diào)用close函數(shù)關(guān)閉文件常見寫操作文件寫入內(nèi)容:f.write(text)方法withopen('f.txt','w',encoding='utf-8')asf:

f.write('Hello,world.\n')其中f為文件對象,text為待寫入字符串文件寫入多行內(nèi)容:writelines(lines)方法ls=['Hello','Python']withopen('file.txt','w',encoding='utf-8')asf:

f.writelines(ls)lines為待寫入的內(nèi)容,可以是字符串或者字符串序列項目小結(jié)知識點示例說明常見讀操作文件讀?。簉ead(size)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論