《Python語言程序設計》 課件 第11章 文件操作_第1頁
《Python語言程序設計》 課件 第11章 文件操作_第2頁
《Python語言程序設計》 課件 第11章 文件操作_第3頁
《Python語言程序設計》 課件 第11章 文件操作_第4頁
《Python語言程序設計》 課件 第11章 文件操作_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章文件操作第11章

文件操作文件的基本概念文件讀、寫方法1.文件的概念

文件是一組用文件名標識的數(shù)據(jù)集合,存儲在外部介質(zhì)(如磁盤)上。

根據(jù)存儲格式不同,分為:文本文件和二進制文件文本文件:由字符組成,按ASCII碼、UTF-8或Unicode等編碼,可以通過文本編輯器進行編輯,占用存儲空間較多,且需要花費時間進行轉(zhuǎn)換(二進制形式與ASCII碼間的轉(zhuǎn)換)。二進制文件:將內(nèi)存中的數(shù)據(jù)按照其在內(nèi)存中的存儲形式原樣輸出到磁盤上進行存儲。典型的二進制文件包括數(shù)據(jù)庫文件、圖像文件、可執(zhí)行文件等。不能看作是字符串,只能當作字節(jié)流。11.1文件的概念2.文件操作

首先打開文件,并創(chuàng)建文件對象,

然后通過該文件對象對文件內(nèi)容進行讀寫,

最后關(guān)閉文件。

讀(read):從文件中取數(shù)據(jù),輸入到內(nèi)存。

寫(write):將內(nèi)存數(shù)據(jù)輸出到磁盤文件。11.2文件的打開與關(guān)閉11.2.1打開文件

在程序和操作系統(tǒng)之間建立起聯(lián)系,把文件的一些信息通知給操作系統(tǒng)。1.open()函數(shù)

返回一個文件對象,對文件進行各種操作。文件對象=open(“文件名”[,“打開方式”][,緩沖區(qū)])文件名:可以包含盤符、路徑,是一個字符串。

表示路徑時,使用"\\"、"/"或"http://"打開方式:讀寫方式,默認是只讀。緩沖區(qū):是否使用緩沖存儲。0表示不使用緩沖存儲;-1或>=1表示使用緩沖存儲(默認)。打開方式:”r”:只讀,文件不存在時返回異常”w”:覆蓋寫,文件不存在則創(chuàng)建,存在則完全覆蓋“x":創(chuàng)建寫,文件不存在則創(chuàng)建,存在則返回異?!盿”:追加寫,文件不存在則創(chuàng)建,存在則在文件最后追加內(nèi)容“r+”、“w+”、“a+”:原功能基礎上增加讀寫功能"rb"、"wb"、"xb"、"ab":二進制文件的讀寫模式open("test.txt","r")open("test.txt")

open("test.txt","w")2.文件對象屬性引用方法:文件對象名.屬性屬性:name:返回文件的名字

mode:返回文件的打開方式

closed:若文件被關(guān)閉返回True,否則返回Falsefo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)程序運行結(jié)果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb3.文件對象方法11.2.2關(guān)閉文件

當對文件內(nèi)容操作完成后,需要關(guān)閉文件,才能正確保存文件并釋放資源供其它程序使用。close()方法關(guān)閉文件,其調(diào)用格式為:文件對象.close()

fo=open("file.txt","wb")print("Nameofthefile:",)fo.close()11.3文本文件的操作11.3.1文本文件的讀取1.read()方法

變量=文件對象.read()

讀取從當前位置直到文件末尾的內(nèi)容,并作為字符串返回,賦給變量。如果是剛打開的文件對象,則讀取整個文件。

可以帶有參數(shù):變量=文件對象.read(size)

讀取從文件當前位置開始的size個字符,并作為字符串返回,賦給變量。(1)如果文件結(jié)束,就讀取到文件結(jié)束為止。(2)如果size大于文件從當前位置到末尾的字符數(shù),則僅返回這些字符。例10-1文本文件file.txt里的內(nèi)容:Pythonisveryuseful.ProgramminginPythonisveryeasy.統(tǒng)計字母a的次數(shù)。分析:先讀取文件的全部內(nèi)容,得到一個字符串,然后遍歷字符串,統(tǒng)計字母a的個數(shù)。infile=open(“file.txt","r")s=infile.read()print(s)n=0forcins:ifcin'a':n+=1print(n)infile.close()程序運行結(jié)果:Pythonisverynice.ProgramminginPythonisveryeasy.(空一行)22.readline()方法

變量=文件對象.readline()

讀取從當前位置到行末(即下一個換行符)的所有字符,并作為字符串返回給變量。通常用此方法來讀取文件的當前行,包括行結(jié)束符。如果當前處于文件末尾,則返回空串。>>>file=open(“file.txt”,“r”)>>>content=fo.readline()>>>print(content)Pythonisverynice.>>>content=fo.readline()>>>print(content)ProgramminginPythonisveryeasy.>>>content=fo.readline()#輸出’’【例

11-2】已經(jīng)建立文本文件

file.txt,統(tǒng)計文件中字母

a出現(xiàn)的次數(shù),用

readline()函數(shù)實現(xiàn)。file=open("file.txt","r")#讀取文件s=file.readline()#讀取一行n=0whiles!='':#若沒有讀取完則繼續(xù)循環(huán) print(s[:-1])#顯示文件內(nèi)容 forcins:#遍歷讀取字符串 ifcin'a':n+=1 s=file.readline()#讀取下一行print(n)file.close()#關(guān)閉文件程序運行結(jié)果:Pythonisverynice.ProgramminginPythonisveryeasy.23.readlines()方法

變量=文件對象.readlines()

讀取從當前位置直到文件末尾的所有行,并將這些行構(gòu)成列表返回,賦給變量。列表中的元素即每一行構(gòu)成的字符串。如果當前處于文件末尾,則返回空列表。file=open("d:\\file.txt","r")list=file.readlines()print(list)file.close()['Pythonisverynice.\n','ProgramminginPythonisveryeasy.\n']輸出結(jié)果:

【例

11-3】已經(jīng)建立文本文件

file.txt,統(tǒng)計文件中字母

a出現(xiàn)的次數(shù)。用

readlines()方法實現(xiàn)。file=open("d:\\file.txt","r")#打開文件,準備讀取list=file.readlines()#讀取各行,并存到列表n=0forsinlist:#遍歷列表print(s[:-1])#顯示文件內(nèi)容forcins:#遍歷列表的字符串元素ifcin'a':n+=1print(n)file.close()#關(guān)閉文件11.3.2文本文件的寫入1.write()方法

文件對象.write(字符串)在文件當前位置寫入字符串,并返回字符的個數(shù)。Write方法執(zhí)行完后并不換行!【例

11-4】從鍵盤輸入若干字符串,逐個將它們寫入

file1.txt中,知道輸入“*”時結(jié)束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。

file=open(“d:\\file1.txt”,“w”)#打開文件,準備建立文本文件print("輸入多行字符串(輸入'*'結(jié)束):")s=input()#從鍵盤輸入一個字符串whiles!=“*”:#不斷輸入,直到輸入結(jié)束標志file.write(s+‘\n‘)#將字符串寫入文件s=input()#從鍵盤輸入一個字符串file.close()file=open(“d:\\file1.txt”,“r”)#打開文件,準備讀取s=file.read()print("輸出文本文件:")print(s.strip())2.writelines()方法文件對象.writelines(字符串元素的列表)在文件當前位置處依次寫入列表中的所有字符串。(1)列表類型的各字符串元素連接起來寫入文件中(2)寫入文件不會含引號(3)不會自動加入換行符file=open("file2.dat","w")file.writelines(["Python語言","Python程序\n","Python程序設計"])file.close()【例

11-5】從鍵盤輸入若干字符串,逐個將它們寫入

file1.txt的尾部,直到輸入“*”時結(jié)束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。print("輸入多行字符串(輸入“*”結(jié)束)")list=[]whileTrue:

s=input()ifs=="*":breaklist.append(s+"\n")file=open("d:\\file1.txt","a")file.writelines(list)file.close()file=open("d:\\file1.txt","r")s=file.read()print("輸出文本文件:")print(s.strip())有以下程序代碼,輸出結(jié)果是_______。f1=open('d:\\a1.txt','w')f1.write("1")f1.write('2')f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)12有以下程序代碼,輸出結(jié)果是_______。f1=open('d:\\a1.txt','w')list=['a','b\n','c','d']f1.writelines(list)f1.close()f1=open('d:\\a1.txt','r')s=f1.readline()print(s)ab已經(jīng)建立文本文件data.txt,文件中的內(nèi)容為:WelcometoNanchang,下面代碼執(zhí)行后的結(jié)果為_____________。infile=open("data.txt","r")#打開文件,準備輸出文本文件

ls=infile.readlines()#讀取各行,得到一個列表

n=0

forsinls:#遍歷列表

print(s[:-1])#顯示文件內(nèi)容

forcins:#遍歷列表的字符串元素

ifcin'aeiouAEIOU':n+=1

print(n)

infile.close()61.tell()方法格式:

文件對象.tell()

功能:返回文件的當前位置,即相對于文件開始位置的字節(jié)數(shù),下一個讀取或?qū)懭氩僮鲗l(fā)生在當前位置。例如:>>>fo=open("data.txt","r")>>>fo.tell()0>>>content=file.read(6)>>>num=file.tell()611.4.1文件的定位11.4二進制文件的操作2.seek()方法:更改當前的文件位置。文件對象.seek(偏移[,參考點])偏移:移動的字節(jié)數(shù)

正數(shù)向文件尾移動,負數(shù)向文件頭移動參考點:當前文件的位置

0表示文件頭部,默認值為0

1表示當前位置

2表示文件末尾file=open("d:\\file.txt","rb")distance=file.seek(6,0)print(distance)content=file.read()print(content)運行結(jié)果6b'isverynice.\r\nProgramminginPythonisveryeasy.\r\n'11.4.2二進制文件的讀寫二進制文件的讀/寫操作可以用文件對象read()和write()方法。例11-6s=input('輸入一個字符串:')s=s.encode()#變成字節(jié)數(shù)據(jù)file=open('file2.txt',"wb")#建立二進制文件file.write(s)file.close()file=open('file2.txt','rb')#讀二進制文件list=[]forninrange(1,len(s)+1):file.seek(-n,2)#文件定位從最后一個字符到以一個字符s=file.read(1)#讀一個字節(jié)s=chr(ord(s.decode())^24)#加密處理list,append(s)list=''.join(list)#將序列元素組合成字符串print(list)file.close()2.struct模板用字符串類型來存儲二進制數(shù)據(jù)。pack()函數(shù):把整型(或浮點型)打包成二進制的字符串。字符串=struct.pack(‘包裝類型’,包裝數(shù)據(jù))>>>importstruct>>>a=65>>>bytes=struct.pack('i',a)>>>print(bytes)b’A\x00\x00\x00’解包元組=struct.unpack(‘解包類型’,解包數(shù)據(jù))unpack()函數(shù):將字節(jié)數(shù)據(jù)轉(zhuǎn)換成整型(或浮點型)>>>file=open("file3.txt","rb")>>>bytes=file.read(4)>>>a=struct.unpack('i',bytes)>>>print(a)(65,)注意,unpack()函數(shù)執(zhí)行后得到的結(jié)果是一個元組。3.pickle模塊用于Python的對象(包括內(nèi)置類型和自定義類型)直接寫入到文件中,而不需要先把它們轉(zhuǎn)化為字符串再保存,也不需要底層的文件訪問操作把它們寫入到一個二進制文件里。2個常用的函數(shù):dump()函數(shù)pickle.dump(數(shù)據(jù),文件對象)load()函數(shù)變量=pickle.load(文件對象)importpickleinfo={'one'

溫馨提示

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

評論

0/150

提交評論