Python數(shù)據(jù)分析與實(shí)踐- 課件 第七章 文件操作_第1頁(yè)
Python數(shù)據(jù)分析與實(shí)踐- 課件 第七章 文件操作_第2頁(yè)
Python數(shù)據(jù)分析與實(shí)踐- 課件 第七章 文件操作_第3頁(yè)
Python數(shù)據(jù)分析與實(shí)踐- 課件 第七章 文件操作_第4頁(yè)
Python數(shù)據(jù)分析與實(shí)踐- 課件 第七章 文件操作_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python數(shù)據(jù)分析與實(shí)踐12023/10/28第7章文件操作本章學(xué)習(xí)目標(biāo)?Python打開文件的方法?Python打開文件的各種模式?Python讀寫文件的模式?用Python構(gòu)建文本對(duì)話框32023/10/287.1.1打開文件

Python提供了內(nèi)置的open()方法用于打開文件,用戶可以使用help()方法查看open()的一些屬性:In[1]:help(open)Out[1]:Helponbuilt-infunctionopeninmoduleio:open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)Openfileandreturnastream.RaiseIOErroruponfailure. 42023/10/287.1.1打開文件下面對(duì)open()的參數(shù)進(jìn)行解釋:file:文件所在的路徑。mode:指文件的讀取形式,文件的讀取模式有很多,如表所示:模式描述r打開一個(gè)文件為只讀模式,文件指針位于改文件的開頭。這是默認(rèn)模式。rb打開一個(gè)文件,智能以二進(jìn)制格式讀取,文件指針位于改文件的卡頭。r+打開用于讀取和寫入的文件,文件指針位于文件的開頭。rb+打開用于讀取和寫入二進(jìn)制格式的文件,文件指針在文件的開頭。w打開一個(gè)文件,只寫,如果該文件存在,則覆蓋該文件,如果文件不存在,則在該路勁下創(chuàng)建一個(gè)新的文件,用于寫入。wb打開一個(gè)文件,只能以二進(jìn)制格式寫入,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于寫入。52023/10/287.1.1打開文件w+打開用于寫入和讀取的文件,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于寫入。wb+打開用于寫入和讀取的二進(jìn)制格式文件,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于寫入。a打開文件,文件指針在該文件的末尾,也就是說,該文件處于追加模式。如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于寫入。ab打開一個(gè)二進(jìn)制格式文件,文件指針在該文件的末尾,也就是說,該文件處于追加模式。如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于寫入。a+打開一個(gè)追加和讀取的文件,文件指針在該文件的末尾,該文件為追加模式;如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于讀取和寫入。ab+打開一個(gè)追加和讀取的二進(jìn)制文件,文件指針在該文件的末尾,該文件為追加模式;如果該文件不存在,則在該路徑下創(chuàng)建一個(gè)新文件,用于讀取和寫入。b以二進(jìn)制的形式打開文件。62023/10/287.1.1打開文件

buffering:如果buffering的值被設(shè)為0,就不會(huì)有寄存;如果buffering的值去1,訪問文件時(shí)會(huì)寄存;如果將buffering的值設(shè)為大于1的整數(shù),表明這就是寄存區(qū)的緩沖大??;如果去負(fù)值,寄存區(qū)的緩沖大小為系統(tǒng)默認(rèn)。Encoding:編碼方式,默認(rèn)為None。72023/10/287.1.1打開文件

當(dāng)文件被打開后會(huì)有一個(gè)file對(duì)象,可以通過該對(duì)象得到關(guān)于該文件的各種信息,例如:file=open(filepath,‘w+’)下表列出了和file對(duì)象相關(guān)的所有屬性:屬性描述file.closed返回True表示文件已關(guān)閉,返回False表示文件未關(guān)閉。file.mode返回被打開的的文件的訪問模式。返回文件的名稱。file.softspace如果用print輸出后,必須跟一個(gè)空格符,則返回False,否則返回True。82023/10/287.1.2關(guān)閉文件File對(duì)象的close()方法刷新緩沖區(qū)里任何還沒寫入的信息,并關(guān)閉該文件,在這之后便不能在對(duì)文件進(jìn)行寫入操作了。當(dāng)一個(gè)文件對(duì)象的引用被重新指定給另一個(gè)文件時(shí),python會(huì)關(guān)閉之前的文件。用close()方法關(guān)閉文件是一個(gè)很好的習(xí)慣。代碼形式如下:file.close()92023/10/287.2.1從文件讀取數(shù)據(jù)

file對(duì)象提供了三個(gè)讀文件的方法:read()、readline()和readlines()。每種方法都可以接受一個(gè)變量,以限制每次讀取的數(shù)據(jù)量,但他們通常不使用變量。read()每次讀取整個(gè)文件,它通常用于將一個(gè)文件內(nèi)容放入到一個(gè)字符串變量中。然而,當(dāng)read()讀取的文件內(nèi)容大于可用內(nèi)存時(shí),則不可能接受這種處理。readline()和readlines()之間的差別在于后者是一次性讀取整個(gè)文件,向read()一樣,readlines()自動(dòng)將文件內(nèi)容分析成一個(gè)行的列表,該列表可以由python的for…in…結(jié)構(gòu)進(jìn)行處理;另一方面,readline()每次只讀取一行,通常比readlines()慢很多。102023/10/287.2.1從文件讀取數(shù)據(jù)下表給出file對(duì)象讀取方法和描述:方法描述file.read([size])Size表示讀取的長(zhǎng)度,單位為字節(jié),讀取整個(gè)文件file.readline([size])讀取一行,沒操作一次讀取一行,讀取長(zhǎng)度為size,若size的大小小于這一行的長(zhǎng)度,則返回這一行的部分。file.readlines([size])把文件的每一行作為list的一個(gè)成員,讀取后,返回一個(gè)list,讀取的行數(shù)為size,若size小于文件總行數(shù),則返回文件部分行。112023/10/287.2.1從文件讀取數(shù)據(jù)當(dāng)讀取的文件很大時(shí),常常使用fileinput模塊:importfileinputforlineinfileinput.input(file_path):print(line)也可以直接使用for循環(huán):f=open(file_path)forlineinf.readlines():print(line)122023/10/287.2.1從文件讀取數(shù)據(jù)還可以使用列表解析式:[lineforlineinopen(file_path).readlines()]

在使用open方法打開文件后,一定要記得調(diào)用close()方法關(guān)閉文件。比如,可以用try-finally語(yǔ)句來確保最后能關(guān)閉文件,比如:f=open(file_path)try:forlineinf.readlines():print(line)finally:f.close()注意:不能講open()方法放在try里面,因?yàn)楫?dāng)打開文件出現(xiàn)異常時(shí),文件對(duì)象就無法指向close()操作。132023/10/287.2.2向文件寫入數(shù)據(jù)write():write()方法可以將任何字符串寫入一個(gè)打開的文件中。需要注意的是,python字符串可以是二進(jìn)制數(shù)據(jù),而不僅僅是文字,write()方法不會(huì)再字符串結(jié)尾添加換行符(’\n’)。writelines():writelines()也可以將內(nèi)容寫入到打開的文件中,但是,同write()方法一樣,writelines()也只是機(jī)械的寫入,不會(huì)在每行后面添加任何東西。7.3.1基于win32ui構(gòu)建文件對(duì)話框win32ui模塊:從名字上看,該模塊是對(duì)Windows系統(tǒng)進(jìn)行文件對(duì)話框操作的,該模塊里面的CreatFileDialog()方法可以很方便快捷的的用于創(chuàng)建打開的對(duì)話框,代碼展示如下:importwin32uidlg=win32ui.CreateFileDialog(1)#1表示打開文件對(duì)話框dlg.SetOFNInitialDir("D:\\python")#設(shè)置打開文件對(duì)話框中的初始顯示目錄dlg.DoModal()

filename=dlg.GetPathName()#獲取選擇的文件名稱print(filename)7.3.1基于win32ui構(gòu)建文件對(duì)話框結(jié)果如圖:7.3.1基于win32ui構(gòu)建文件對(duì)話框關(guān)于CreateFileDialog()文本對(duì)話框有幾種內(nèi)置方法,他們的說明如表方法功能GetPathName()獲取路徑名稱GetFileName()獲取文件名稱GetFileExt()獲取文件擴(kuò)展名GetFileTitle()獲取文件標(biāo)題GetPathNames()從文件對(duì)話框中獲取路徑名稱列表GrtReadOnlyPref()獲取只讀文件SetOFNTitle()設(shè)置對(duì)話框命名SetOFNInitialDir()設(shè)置對(duì)話框的初始文件夾DoModal()為對(duì)話框創(chuàng)建一個(gè)模式窗口EndDialog()關(guān)閉一個(gè)模式對(duì)話7.3.1基于win32ui構(gòu)建文件對(duì)話框

這個(gè)打開文件對(duì)話框界面還是很友好的,也是Windows本地風(fēng)格的,但是,它的缺點(diǎn)同樣也很明顯,那就是該模塊支隊(duì)Windows系統(tǒng)有效。所以,當(dāng)對(duì)別的系統(tǒng)進(jìn)行打開或創(chuàng)建文件對(duì)話框的操作時(shí),需要用到tkFileDialog模塊。7.3.2基于tkFileDialog構(gòu)建文件對(duì)話框

tkFileDialog的功能和win32ui差不多,都是用于對(duì)文件對(duì)話框的操作,它的代碼也很簡(jiǎn)單,代碼展示如下:importtkFileDialogfilename=tkFileDialog.askopenfilename(initialdir='E:/Python')print(filename)得到的效果和win32ui是一樣的。7.3.2基于tkFileDialog構(gòu)建文件對(duì)話框表列出了tkFileDialog的幾種常用方法和介紹:方法功能askopenfile(mode=‘r’,**options)打開一個(gè)文本對(duì)話框,返回一個(gè)杜文本對(duì)象;若需要返回多個(gè)文本對(duì)象,使用askopenfiles(mode=‘r’,**options),將以列表形式返回文件對(duì)象。askopenfilename(**options)獲取文件路徑名稱,若要獲取多個(gè)文件路徑名稱,使用askopenfilenames(**options),將以元組形式返回文件路徑和名稱。asksaveasfile(mode=‘w’,**options)打開文本對(duì)話框,返回一個(gè)寫文本對(duì)象asksaveasfilename()獲取需保存文件的路徑和名稱askdirectory()選擇一個(gè)文件夾7.4應(yīng)用實(shí)例:文本文件操作

[例]使用模塊random中的randint()方法生成1~122的隨機(jī)數(shù),以產(chǎn)生字符對(duì)應(yīng)的ASCII碼,然后將滿足一下條件(大寫字母、小寫字母、數(shù)字和一些特殊符號(hào)如“\n”、“\r”、“*”、“&”、“^”、“$”)的字符逐一寫進(jìn)test.txt中,當(dāng)光標(biāo)達(dá)到10001時(shí)停止寫入。7.4應(yīng)用實(shí)例:文本文件操作程序代碼如下:importrandomwithopen('F:\\pythonbook\\chapter7\\test.txt','w')asf:while1:i=random.randint(1,122)x=chr(i)ifx.isupper()orx.islower()\orx.isdigit()orxin['\n','\r','*','&','^','$']:f.write(x)iff.tell()>10000:break7.4應(yīng)用實(shí)例:文本文件操作

運(yùn)行該文件后,會(huì)在F盤pythonbook文件夾下的chapter7目錄產(chǎn)生一個(gè)text.txt文件,文件中也會(huì)寫我們想要的內(nèi)容,如圖:7.4應(yīng)用實(shí)例:文本文件操作7.4應(yīng)用實(shí)例:文本文件操作

[例]將test.txt文件中的所有小寫字母轉(zhuǎn)換成大寫字母,然后保存到test_copy.txt文件中。。分析:先以w模式創(chuàng)建一個(gè)空白的文本文件test_copy.txt,然后將test.txt文件中的小寫字母全部轉(zhuǎn)換成大寫字母,再寫入test_copy.txt文件中。7.4應(yīng)用實(shí)例:文本文件操作程序代碼如下:f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論