大學(xué)計(jì)算機(jī)基礎(chǔ)及應(yīng)用(Python篇)課件:文件操作_第1頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)及應(yīng)用(Python篇)課件:文件操作_第2頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)及應(yīng)用(Python篇)課件:文件操作_第3頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)及應(yīng)用(Python篇)課件:文件操作_第4頁(yè)
大學(xué)計(jì)算機(jī)基礎(chǔ)及應(yīng)用(Python篇)課件:文件操作_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

文件操作目錄頁(yè)12.1文件基本操作12.2 讀寫CSV文件12.1文件基本操作文件標(biāo)識(shí)文件標(biāo)識(shí)的意義:找到計(jì)算機(jī)中唯一確定的文件。文件標(biāo)識(shí)的組成:文件路徑、文件名主干、文件擴(kuò)展名。操作系統(tǒng)以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理。文件類型根據(jù)數(shù)據(jù)的邏輯存儲(chǔ)結(jié)構(gòu),人們將計(jì)算機(jī)中的文件分為文本文件和二進(jìn)制文件。文本文件:專門存儲(chǔ)文本字符數(shù)據(jù)。二進(jìn)制文件:不能直接使用文字處理程序正常讀寫,必須先了解其結(jié)構(gòu)和序列化規(guī)則,再設(shè)計(jì)正確的反序列化規(guī)則,才能正確獲取文件信息。二進(jìn)制文件和文本文件這兩種類型的劃分基于數(shù)據(jù)邏輯存儲(chǔ)結(jié)構(gòu)而非物理存儲(chǔ)結(jié)構(gòu),計(jì)算機(jī)中的數(shù)據(jù)在物理層面都以二進(jìn)制形式存儲(chǔ)。標(biāo)準(zhǔn)文件Python的sys模塊中定義了3個(gè)標(biāo)準(zhǔn)文件,分別為:stdin(標(biāo)準(zhǔn)輸入文件)。標(biāo)準(zhǔn)輸入文件對(duì)應(yīng)輸入設(shè)備,如鍵盤。stdout(標(biāo)準(zhǔn)輸出文件)。stderr(標(biāo)準(zhǔn)錯(cuò)誤文件)。標(biāo)準(zhǔn)輸出文件和標(biāo)準(zhǔn)錯(cuò)誤文件對(duì)應(yīng)輸出設(shè)備,如顯示器。在解釋器中導(dǎo)入sys模塊后,便可對(duì)標(biāo)準(zhǔn)文件進(jìn)行操作。標(biāo)準(zhǔn)文件importsysfile=sys.stdoutfile.write("hello")示例文件的打開、關(guān)閉與讀寫是文件的基礎(chǔ)操作,任何更復(fù)雜的文件操作都離不開這些操作。1.打開文件內(nèi)置函數(shù)open()用于打開文件,該方法的聲明如下:open(file,mode='r',buffering=-1)file:文件的路徑。mode:設(shè)置文件的打開模式,取值有r、w、a。buffering:設(shè)置訪問(wèn)文件的緩沖方式。取值為0或1?!緟?shù)】r:以只讀方式打開文件(mode參數(shù)的默認(rèn)值)。w:以只寫方式打開文件。a:以追加方式打開文件。b:以二進(jìn)制形式打開文件。+:以更新的方式打開文件(可讀可寫)1.打開文件打開模式名稱描述r/rb只讀模式以只讀的形式打開文本文件/二進(jìn)制文件,若文件不存在或無(wú)法找到,文件打開失敗w/wb只寫模式以只寫的形式打開文本文件/二進(jìn)制文件,若文件已存在,則重寫文件,否則創(chuàng)建新文件a/ab追加模式以只寫的形式打開文本文件/二進(jìn)制文件,只允許在該文件末尾追加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件r+/rb+讀?。ǜ拢┠J揭宰x/寫的形式打開文本文件/二進(jìn)制文件,若文件不存在,文件打開失敗

w+/wb+寫入(更新)模式以讀/寫的形式打開文本文件/二進(jìn)制文件,若文件已存在,則重寫文件a+/ab+追加(更新)模式以讀/寫的形式打開文本/二進(jìn)制文件,只允許在文件末尾添加數(shù)據(jù),若文件不存在,則創(chuàng)建新文件1.打開文件內(nèi)置函數(shù)open()用于打開文件,該方法的聲明如下:open(file,mode='r',buffering=-1)若open()函數(shù)調(diào)用成功,返回一個(gè)文件對(duì)象。【返回值】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示例1.打開文件若待打開的文件不存在,文件打開失敗,程序會(huì)拋出異常,并打印錯(cuò)誤信息。------------------------------------------------------------------------FileNotFoundErrorTraceback(mostrecentcalllast)<ipython-input-5-23b0bb5a2ffc>in<module>---->1file1=open("b.txt")FileNotFoundError:[Errno2]Nosuchfileordirectory:'b.txt'示例2.關(guān)閉文件Python可通過(guò)close()方法關(guān)閉文件,也可以使用with語(yǔ)句實(shí)現(xiàn)文件的自動(dòng)關(guān)閉。close()方法是文件對(duì)象的內(nèi)置方法。(1)close()方法file.close()示例2.關(guān)閉文件with語(yǔ)句可預(yù)定義清理操作,以實(shí)現(xiàn)文件的自動(dòng)關(guān)閉。(2)with語(yǔ)句withopen('a.txt')asf:pass示例思考:為什么要及時(shí)關(guān)閉文件?計(jì)算機(jī)中可打開的文件數(shù)量是有限打開的文件占用系統(tǒng)資源若程序因異常關(guān)閉,可能產(chǎn)生數(shù)據(jù)丟失12.2 讀寫CSV文件Python提供了一系列讀寫文件的方法,包括讀取文件的read()、readline()、readlines()方法和寫文件的write()、writelines()方法,下面結(jié)合這些方法分別介紹如何讀寫文件。1.讀取文件——read()方法read()方法可以從指定文件中讀取指定字節(jié)的數(shù)據(jù),其語(yǔ)法格式如下:read(n=-1)withopen('file.txt',mode='r')asf:print(f.read(2)) #讀取兩個(gè)字節(jié)的數(shù)據(jù)

print(f.read()) #讀取剩余的全部數(shù)據(jù)示例1.讀取文件——readline()方法readline()方法可以從指定文件中讀取一行數(shù)據(jù),其語(yǔ)法格式如下:readline()withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readline())print(f.readline())示例1.讀取文件——readline()方法readlines()方法可以一次讀取文件中的所有數(shù)據(jù),若讀取成功,該方法會(huì)返回一個(gè)列表,文件中的每一行對(duì)應(yīng)列表中的一個(gè)元素。語(yǔ)法格式如下:readlines(hint=-1)withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readlines())#使用readlines()方法讀取數(shù)據(jù)示例hint:?jiǎn)挝粸樽止?jié),用于控制要讀取的行數(shù)如果行中數(shù)據(jù)的總大小超出了hint字節(jié),readlines()不會(huì)再讀取更多的行。1.讀取文件read()(參數(shù)缺省時(shí))和readlines()方法都可一次讀取文件中的全部數(shù)據(jù),但因?yàn)橛?jì)算機(jī)的內(nèi)存是有限的,若文件較大,read()和readlines()的一次讀取便會(huì)耗盡系統(tǒng)內(nèi)存,所以這兩種操作都不夠安全。為了保證讀取安全,通常多次調(diào)用read()方法,每次讀取size字節(jié)的數(shù)據(jù)。2.寫文件——write()方法write()方法可以將指定字符串寫入文件,其語(yǔ)法格式如下:write(data)以上格式中的參數(shù)data表示要寫入文件的數(shù)據(jù),若數(shù)據(jù)寫入成功,write()方法會(huì)返回本次寫入文件的數(shù)據(jù)的字節(jié)數(shù)。string="Hereweareall,byday;bynight." #字符串withopen('write_file.txt',mode='w',encoding='utf-8')asf: size=f.write(string) #寫入字符串

print(size) #打印字節(jié)數(shù)示例2.寫文件——writelines()方法writelines()方法用于將行列表寫入文件,其語(yǔ)法格式如下:writelines(lines)以上格式中的參數(shù)lines表示要寫入文件中的數(shù)據(jù),該參數(shù)可以是一個(gè)字符串或者字符串列表。若寫入文件的數(shù)據(jù)在文件中需要換行,需要顯式指定換行符。string="Hereweareall,byday;\nbynightwe'rehurl'dBydreams,eachoneintoaseveralworld."withopen('write_file.txt',mode='w',encoding='utf-8')asf:f.writelines(string)示例文本文件支持多種編碼方式,不同編碼方式下字符與字節(jié)的對(duì)應(yīng)關(guān)系不同,常見的編碼方式以及字符與字節(jié)的對(duì)應(yīng)關(guān)系如表所示。編碼方式語(yǔ)言字符數(shù)字節(jié)數(shù)ASCII中文12英文11UTF-8中文13英文11Unicode中文12英文12GBK中文12英文11

7.2.2節(jié)使用read()方法讀取了文件file.txt,結(jié)合代碼與程序運(yùn)行結(jié)果進(jìn)行分析,可以發(fā)現(xiàn)read()方法第1次讀取了2個(gè)字符,第2次從第3個(gè)字符“e”開始讀取了剩余字符。在文件的一次打開與關(guān)閉之間進(jìn)行的讀寫操作是連續(xù)的,程序總是從上次讀寫的位置繼續(xù)向下進(jìn)行讀寫操作。每個(gè)文件對(duì)象都有一個(gè)稱為“文件讀寫位置”的屬性,該屬性會(huì)記錄當(dāng)前讀寫的位置。文件讀寫位置默認(rèn)為0,即在文件首部。Python提供了一些獲取與修改文件讀寫位置的方法,以實(shí)現(xiàn)文件的定位讀寫。tell():獲取文件當(dāng)前的讀寫位置。seek():控制文件的讀寫位置。tell()方法用于獲取文件當(dāng)前的讀寫位置,以操作文件file.txt為例,tell()的用法如下:1.tell()方法withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置

print(f.read(5)) #利用read()方法移動(dòng)文件讀寫位置

print(f.tell()) #再次獲取文件讀寫位置示例Python提供了seek()方法,使用該方法可控制文件的讀寫位置,實(shí)現(xiàn)文件的隨機(jī)讀寫。seek()方法的語(yǔ)法格式如下:seek(offset,from)offset:表示偏移量,即讀寫位置需要移動(dòng)的字節(jié)數(shù)。from:用于指定文件的讀寫位置,該參數(shù)的取值為0、1、2。2.seek()方法0:表示文件開頭。1:表示使用當(dāng)前讀寫位置。2:表示文件末尾。seek()方法調(diào)用成功后會(huì)返回當(dāng)前讀寫位置。2.seek()方法withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置

print(f.read(5)) #利用read()方法移動(dòng)文件讀寫位置

print(f.tell()) #再次獲取文件讀寫位置示例在Python3中,若打開的是文本文件,那么seek()方法只允許相對(duì)于文件開頭移動(dòng)文件位置,若在參數(shù)from值為1、2的情況下對(duì)文本文件進(jìn)行位移操作,將會(huì)產(chǎn)生錯(cuò)誤。2.seek()方法withopen('file.txt')asf:f.seek(5,0) #相對(duì)文件開頭移動(dòng)5字節(jié)

f.seek(3,1)示例若要相對(duì)當(dāng)前讀寫位置或文件末尾進(jìn)行位移操作,需以二進(jìn)制形式打開文件。2.seek()方法withopen('file.txt','rb')asf:f.seek(5,0)f.seek(3,1)示例對(duì)于用戶而言,文件和目錄以不同的形式展現(xiàn),但對(duì)計(jì)算機(jī)而言,目錄是文件屬性信息集合,它本質(zhì)上也是一種文件。os模塊中定義了與文件操作相關(guān)的函數(shù),利用這些函數(shù)可以實(shí)現(xiàn)刪除文件、文件重命名、創(chuàng)建/刪除目錄、獲取當(dāng)前目錄、更改默認(rèn)目錄與獲

溫馨提示

  • 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)論