Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目七 文件_第1頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目七 文件_第2頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目七 文件_第3頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目七 文件_第4頁
Python程序設(shè)計基礎(chǔ)項目化教程 課件 項目七 文件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《Python語言程序設(shè)計》項目七文件Contents掌握os模塊的使用掌握Python文件的讀寫掌握Python數(shù)據(jù)的處理os模塊的使用PART01通過os模塊可以方便地使用操作系統(tǒng)的相關(guān)功能。使用os模塊的功能前,需要先通過“importos”將其導(dǎo)入。查看系統(tǒng)平臺使用“”可以查看當(dāng)前操作系統(tǒng)的名字,Windows用字符串“nt”表示,Linux用字符串“posix”表示。獲取環(huán)境變量值os.environ是一個包含所有環(huán)境變量值的映射對象,在Python控制臺下直接輸入os.environ即可查看當(dāng)前所有環(huán)境變量。如果要查看某一個環(huán)境變量值,則可以采用以下方式:os.environ[key]或os.getenv(key)例:查看HOME環(huán)境變量的值。os.environ['HOME']或os.getenv('HOME')os模塊獲取當(dāng)前系統(tǒng)平臺路徑分隔符不同操作系統(tǒng)可能會使用不同的路徑分隔符。例如,Windows系統(tǒng)以'\\'作為路徑分隔符,而Linux系統(tǒng)以'/'作為路徑分隔符。使用“os.sep”可以獲取當(dāng)前系統(tǒng)平臺的路徑分隔符。獲取當(dāng)前工作目錄使用os.getcwd函數(shù)可以獲取當(dāng)前工作目錄。如果要訪問當(dāng)前工作目錄下的data子目錄中的test.dat文件,則除了可以使用'data'+os.sep+'test.dat'或'data{sep}test.dat'.format(sep=os.sep)這種相對路徑形式外,還可以寫為如下的絕對路徑形式:os.getcwd()+os.sep+'data'+os.sep+'test.dat'或'{cwd}{sep}data{sep}test.dat'.format(cwd=os.getcwd(),sep=os.sep)如果當(dāng)前工作目錄是"D:\\Python\\Python37",則得到的絕對路徑為"D:\\Python\\Python37\\data\\test.dat"。os模塊獲取文件和目錄列表使用os.listdir函數(shù)可以獲取指定路徑下的所有文件和目錄的名字,os.listdir函數(shù)的語法格式為:os.listdir(path='.')其中,path是要獲取文件和目錄名字的路徑,默認(rèn)值'.'表示獲取當(dāng)前路徑下的所有文件和目錄的名字。返回值是由path路徑下所有文件和目錄名字組成的列表。例如:os.listdir()os.listdir(os.getcwd()+os.sep+'DLLs')會分別獲取到當(dāng)前路徑下所有文件和目錄名字組成的列表,以及當(dāng)前路徑的DLLs目錄下所有文件和目錄名字組成的列表。os模塊創(chuàng)建目錄使用os.mkdir和os.makedirs函數(shù)可以根據(jù)指定路徑創(chuàng)建目錄。os.mkdir和os.makedirs函數(shù)的語法格式分別為:os.mkdir(path)os.makedirs(path)其中,path指明了要創(chuàng)建的目錄。例如:os.mkdir(os.getcwd()+os.sep+'newdir')os.makedirs(os.getcwd()+os.sep+'subdir1'+os.sep+'subdir2')程序執(zhí)行完畢后,第1行代碼將在當(dāng)前工作目錄下創(chuàng)建一個名為newdir的目錄;第2行代碼將在當(dāng)前工作目錄下先創(chuàng)建一個名為subdir1的目錄,再在subdir1目錄下創(chuàng)建一個名為subdir2的目錄。os模塊刪除目錄使用os.rmdir函數(shù)可以刪除指定路徑的最后一層目錄。os.rmdir函數(shù)的語法格式為:os.rmdir(path)其中,path指定了要刪除的目錄。例如:os.rmdir(os.getcwd()+os.sep+'newdir')程序執(zhí)行完畢后,會將當(dāng)前工作目錄下的newdir目錄刪除。os模塊刪除多級目錄如果需要刪除指定路徑的最后多層目錄,可以使用os.removedirs函數(shù)。os.removedirs函數(shù)的語法格式為:os.removedirs(path)其中,path指定了要刪除的目錄。os.removedirs函數(shù)會從指定路徑中的最后一個目錄開始逐層向前刪除,直到指定路徑中的所有目錄都刪除完畢或者遇到一個不為空的目錄。例如:os.removedirs(os.getcwd()+os.sep+'subdir1'+os.sep+'subdir2')首先會刪除當(dāng)前工作目錄的subdir1目錄下的subdir2子目錄;然后刪除當(dāng)前工作目錄下的subdir1目錄;最后會因當(dāng)前工作目錄不是空目錄而停止刪除操作,os.removedirs函數(shù)執(zhí)行結(jié)束。os模塊相對路徑、絕對路徑相對路徑是指相對于當(dāng)前工作目錄指定的路徑,其中“.”表示當(dāng)前目錄,而“..”表示上一層目錄;絕對路徑是指從最頂層目錄開始所給出的完整的路徑。例如:如果要訪問當(dāng)前工作目錄下名字為DLLs的目錄,既可以使用相對路徑'.\\DLLs'或'DLLs',也可以使用絕對路徑'D:\\Python\\Python37\\DLLs';如果要訪問當(dāng)前工作目錄的上一層目錄,既可以使用相對路徑'..',也可以使用絕對路徑'D:\\Python'。os模塊獲取指定相對路徑的絕對路徑使用os.path.abspath函數(shù)可以獲取指定相對路徑的絕對路徑,其語法格式為:os.path.abspath(path)其作用是獲取path所對應(yīng)的絕對路徑。例如:print(os.path.abspath('..'))

print(os.path.abspath('DLLs'))

D:\PythonD:\Python\Python37\DLLsos模塊獲取文件所在目錄的路徑使用os.path.dirname可以獲取文件所在目錄的路徑,其語法格式為:os.path.dirname(path)其作用是返回path中去除文件名后的路徑。例如:print(os.path.dirname('D:\\Python\\Python37\\LICENSE.txt'))D:\Python\Python37os模塊獲取指定路徑的目錄名或文件名使用os.path.split函數(shù)可以將指定路徑分解成路徑名和目錄/文件名兩部分:os.path.basename(path)其作用是返回path中的文件名。例如:print(os.path.basename('D:\\Python\\Python37\\LICENSE.txt'))LICENSE.txtos模塊獲取文件名使用os.path.basename可以獲取指定路徑中的文件名,其語法格式為:os.path.split(path)其作用是返回一個由path分解得到的路徑名和目錄/文件名組成的元組。例如:print(os.path.split(os.getcwd()+os.sep+'LICENSE.txt'))('D:\\Python\\Python37','LICENSE.txt')os模塊分離文件擴(kuò)展名使用os.path.splitext函數(shù)可以將擴(kuò)展名從指定路徑中分離出來,其語法格式為:os.path.splitext(path)其作用是將path所指定的路徑分解為一個元組(root,ext),其中ext是擴(kuò)展名,root是擴(kuò)展名前面的內(nèi)容。例如:print(os.path.splitext('d:\\Python\\Python37\\LICENSE.txt'))

('D:\\Python\\Python37\\LICENSE','.txt')os模塊路徑連接使用os.path.join函數(shù)一個路徑的多個組成部分用系統(tǒng)路徑分隔符連接在一起,其語法格式為:os.path.join(path,*paths)其作用是將各參數(shù)用系統(tǒng)路徑分隔符連接得到的結(jié)果返回。例如:print(os.path.join('D:\\Python','Python37','LICENSE.txt'))D:\Python\Python37\LICENSE.txtos模塊判斷指定路徑目標(biāo)是否為文件使用os.path.isfile函數(shù)可以判斷指定路徑目標(biāo)是否為文件。os.path.isfile函數(shù)的語法格式為:os.path.isfile(path)其作用是判斷path所指定的目標(biāo)是否是文件。如果是文件,則返回True;否則,返回False。例如:dir=os.getcwd()#dir保存了當(dāng)前工作目錄file=dir+os.sep+'LICENSE.txt'#file保存了當(dāng)前工作目錄下LICENSE.txt#文件的路徑print(dir+'是文件:'+str(os.path.isfile(dir)))print(file+'是文件:'+str(os.path.isfile(file)))D:\Python\Python37是文件:FalseD:\Python\Python37\LICENSE.txt是文件:Trueos模塊判斷指定路徑目標(biāo)是否為目錄使用os.path.isdir函數(shù)可以判斷指定路徑目標(biāo)是否為目錄,其語法格式為:os.path.isdir(path)其作用是判斷path所指定的目標(biāo)是否是目錄。如果是目錄,則返回True;否則,返回False。例如:dir=os.getcwd()#dir保存了當(dāng)前工作目錄file=dir+os.sep+'LICENSE.txt'#file保存了當(dāng)前工作目錄下LICENSE.txt#文件的路徑print(dir+'是目錄:'+str(os.path.isdir(dir)))print(file+'是目錄:'+str(os.path.isdir(file)))D:\Python\Python37是目錄:TrueD:\Python\Python37\LICENSE.txt是目錄:Falseos模塊判斷指定路徑是否存在使用os.path.exists函數(shù)可以判斷指定路徑是否存在,其語法格式為:os.path.exists(path)其作用是判斷path所指定的路徑是否存在。如果存在,則返回True;否則,返回False。例如:path1=os.getcwd()#path1保存了當(dāng)前工作目錄path2=path1+os.sep+'mytest'#path2保存了當(dāng)前工作目錄下mytest子目#錄的路print(path1+'存在:'+str(os.path.exists(path1)))print(path2+'存在:'+str(os.path.exists(path2)))D:\Python\Python37存在:TrueD:\Python\Python37\mytest存在:Falseos模塊判斷指定路徑是否為絕對路徑使用os.path.isabs函數(shù)可以判斷指定路徑是否為絕對路徑,其語法格式為:os.path.isabs(path)其作用是判斷path所指定的路徑是否為絕對路徑。如果是絕對路徑,則返回True;否則,返回False。例如:print('..是絕對路徑:'+str(os.path.isabs('..')))print(os.getcwd()+'是絕對路徑:'+str(os.path.isabs(os.getcwd())))..是絕對路徑:FalseD:\Python\Python37是絕對路徑:Trueos模塊文件讀寫PART02程序中的數(shù)據(jù)都存儲在內(nèi)存中,當(dāng)程序執(zhí)行完畢后,內(nèi)存中的數(shù)據(jù)將丟失。文件可以用來進(jìn)行數(shù)據(jù)的長期保存。使用open函數(shù)可以打開一個要做讀/寫操作的文件,其常用形式為::open(filename,mode='r')其中,filename是要打開文件的路徑;mode是文件打開方式,不同文件打開方式可以組合使用,默認(rèn)打開方式為'r'(等同于'rt')。使用open函數(shù)打開文件后會返回一個文件對象,利用該文件對象可完成文件中數(shù)據(jù)的讀寫操作。文件讀寫文件打開方式模式描述r以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。w打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。a打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。b二進(jìn)制模式。t文本模式(默認(rèn))。+打開一個文件進(jìn)行更新(可讀可寫)。文件讀寫常用文件打開方式組合模式描述r+打開一個文件用于讀寫。文件指針將會放在文件的開頭。w+打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。a+打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。rb+以二進(jìn)制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等。wb+以二進(jìn)制格式打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內(nèi)容會被刪除。如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件如圖片等。ab+以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。文件讀寫open函數(shù)使用示例:f=open('D:\\Python\\test.txt','w+')即以“w+”方式打開文件“D:\\Python\\test.txt”,并將返回的文件對象賦給f,后面可用f對該文件進(jìn)行讀寫操作。文件讀寫文件關(guān)閉使用open函數(shù)打開文件并完成讀/寫操作后,必須使用文件對象的close方法將文件關(guān)閉。例如,假設(shè)有一個文件對象f,則在對f所對應(yīng)的文件完成讀/寫操作后,應(yīng)使用“f.close()”關(guān)閉文件。f=open('D:\\Python\\test.txt','w+')print('文件已關(guān)閉:',f.closed)f.close()print('文件已關(guān)閉:',f.closed)文件已關(guān)閉:False文件已關(guān)閉:True文件讀寫write方法使用文件對象的write方法可以將字符串寫入到文件中,其語法格式為:f.write(str)其中,f是open函數(shù)返回的文件對象,str是要寫入到文件中的字符串。f.write函數(shù)執(zhí)行完畢后將返回寫入到文件中的字符數(shù)。例如charnum=0withopen('D:\\Python\\test.txt','w+')asf:charnum+=f.write('Python是一門流行的編程語言!\n')charnum+=f.write('我喜歡學(xué)習(xí)Python語言!')print('總共向文件中寫入的字符數(shù):%d'%charnum)總共向文件中寫入的字符數(shù):32文件讀寫read方法使用文件對象的read方法可以從文件中讀取數(shù)據(jù),其語法格式為:f.read(n=-1)其中,f是open函數(shù)返回的文件對象;n指定了要讀取的字節(jié)數(shù),默認(rèn)值-1表示讀取文件中的所有數(shù)據(jù)。read方法將從文件中讀取的數(shù)據(jù)返回。例如withopen('D:\\Python\\test.txt','r')asf:content1=f.read()content2=f.read()print('content1:\n%s'%content1)print('content2:\n%s'%content2)文件讀寫readline方法使用文件對象的readline方法可以從文件中每次讀取一行數(shù)據(jù),其語法格式為:f.readline()其中,f是open函數(shù)返回的文件對象。readline方法將從文件中讀取的一行數(shù)據(jù)返回。例如ls=[]withopen('D:\\Python\\test.txt','r')asf:ls.append(f.readline())ls.append(f.readline())print(ls)['Python是一門流行的編程語言!\n','我喜歡學(xué)習(xí)Python語言!']文件讀寫readlines方法使用文件對象的readlines方法可以從文件中按行讀取所有數(shù)據(jù),其語法格式為:f.readlines()其中,f是open函數(shù)返回的文件對象。readlines方法將從文件中按行讀取的所有數(shù)據(jù)以列表形式返回。例如withopen('D:\\Python\\test.txt','r')asf:ls=f.readlines()print(ls)['Python是一門流行的編程語言!\n','我喜歡學(xué)習(xí)Python語言!']文件讀寫seek方法使用seek方法可以移動文件指針,從而實現(xiàn)文件的隨機(jī)讀寫,其語法格式為:f.seek(pos,whence=0)其中,f是open函數(shù)返回的文件對象;pos是要移動的字節(jié)數(shù);whence是參照位置,默認(rèn)值0表示以文件首作為參照位置,1和2分別表示以當(dāng)前文件指針位置和文件尾作為參照位置。seek方法沒有返回值。例如withopen('D:\\Python\\test.txt','r')asf:f.seek(6,0)print(f.readline())是一門流行的編程語言!文件讀寫數(shù)據(jù)的處理PART03一維數(shù)據(jù)一維數(shù)據(jù)是指數(shù)據(jù)元素的值由一個因素唯一確定。例如:對于N名學(xué)生在語文考試中的成績,每個成績由學(xué)生唯一確定,學(xué)生1的考試成績?yōu)槌煽?、學(xué)生2的考試成績?yōu)槌煽?、…、學(xué)生N的考試成績?yōu)槌煽僋。數(shù)據(jù)的處理一維數(shù)據(jù)對于一維有序數(shù)據(jù),可以使用列表存儲;對于一維無序數(shù)據(jù),可以使用集合存儲。例如:對于5名學(xué)生的語文課成績,可以使用如下形式的列表存儲:data1D=[90,70,95,98,65]數(shù)據(jù)的處理二維數(shù)據(jù)二維數(shù)據(jù)是指數(shù)據(jù)元素的值由兩個因素共同確定。例如:對于M名學(xué)生在語文、數(shù)學(xué)、英語三門課程考試中的成績,由學(xué)生和課程共同確定,學(xué)生1在語文、數(shù)學(xué)和英語課上的考試成績分別為成績11、成績12和成績13;……;學(xué)生M在語文、數(shù)學(xué)和英語課上的考試成績分別為成績M1、成績M2和成績M3。數(shù)據(jù)的處理二維數(shù)據(jù)二維數(shù)據(jù)可以看作是由多個一維數(shù)據(jù)組成。數(shù)據(jù)的處理二維數(shù)據(jù)通過二維列表可以存儲二維數(shù)據(jù)。例如:要使用二維列表存儲5名學(xué)生在3門課程上的成績,需要寫成如下形式:data2D=[[90,98,87],#第1名學(xué)生的3門課程成績[70,89,92],#第2名學(xué)生的3門課程成績[95,78,81],#第3名學(xué)生的3門課程成績[98,90,95],#第4名學(xué)生的3門課程成績[65,72,70]]#第5名學(xué)生的3門課程成績數(shù)據(jù)的處理CSV文件存儲示例對于一維數(shù)據(jù),使用CSV文件存儲的結(jié)果為:90,70,95,98,65對于二維數(shù)據(jù),使用CSV文件存儲的結(jié)果為:90,98,8770,89,9295,78,8198,90,9565,72,70數(shù)據(jù)的處理CSV文件的寫操作csv模塊的writer方法可以生成一個writer對象,使用該對象可以將數(shù)據(jù)以逗號分隔的形式寫入到CSV文件中。csv.writer方法的語法格式為:csv.writer(csvfile)其中,csvfile是一個具有write方法的對象。如果將open函數(shù)返回的文件對象作為實參傳給csvfile,則調(diào)用open函數(shù)打開文件時必須加上一個關(guān)鍵字參數(shù)“newline=''”。數(shù)據(jù)的處理CSV文件的寫操作生成writer對象后,就可以使用csv模塊的writerow和writerows方法向CSV文件中寫入數(shù)據(jù)。cs

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論