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

下載本文檔

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

文檔簡介

Python數(shù)據(jù)分析與實踐12023/10/28第7章文件操作本章學習目標?Python打開文件的方法?Python打開文件的各種模式?Python讀寫文件的模式?用Python構(gòu)建文本對話框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打開文件下面對open()的參數(shù)進行解釋:file:文件所在的路徑。mode:指文件的讀取形式,文件的讀取模式有很多,如表所示:模式描述r打開一個文件為只讀模式,文件指針位于改文件的開頭。這是默認模式。rb打開一個文件,智能以二進制格式讀取,文件指針位于改文件的卡頭。r+打開用于讀取和寫入的文件,文件指針位于文件的開頭。rb+打開用于讀取和寫入二進制格式的文件,文件指針在文件的開頭。w打開一個文件,只寫,如果該文件存在,則覆蓋該文件,如果文件不存在,則在該路勁下創(chuàng)建一個新的文件,用于寫入。wb打開一個文件,只能以二進制格式寫入,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于寫入。52023/10/287.1.1打開文件w+打開用于寫入和讀取的文件,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于寫入。wb+打開用于寫入和讀取的二進制格式文件,如果該文件存在,則覆蓋該文件,如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于寫入。a打開文件,文件指針在該文件的末尾,也就是說,該文件處于追加模式。如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于寫入。ab打開一個二進制格式文件,文件指針在該文件的末尾,也就是說,該文件處于追加模式。如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于寫入。a+打開一個追加和讀取的文件,文件指針在該文件的末尾,該文件為追加模式;如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于讀取和寫入。ab+打開一個追加和讀取的二進制文件,文件指針在該文件的末尾,該文件為追加模式;如果該文件不存在,則在該路徑下創(chuàng)建一個新文件,用于讀取和寫入。b以二進制的形式打開文件。62023/10/287.1.1打開文件

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

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

file對象提供了三個讀文件的方法:read()、readline()和readlines()。每種方法都可以接受一個變量,以限制每次讀取的數(shù)據(jù)量,但他們通常不使用變量。read()每次讀取整個文件,它通常用于將一個文件內(nèi)容放入到一個字符串變量中。然而,當read()讀取的文件內(nèi)容大于可用內(nèi)存時,則不可能接受這種處理。readline()和readlines()之間的差別在于后者是一次性讀取整個文件,向read()一樣,readlines()自動將文件內(nèi)容分析成一個行的列表,該列表可以由python的for…in…結(jié)構(gòu)進行處理;另一方面,readline()每次只讀取一行,通常比readlines()慢很多。102023/10/287.2.1從文件讀取數(shù)據(jù)下表給出file對象讀取方法和描述:方法描述file.read([size])Size表示讀取的長度,單位為字節(jié),讀取整個文件file.readline([size])讀取一行,沒操作一次讀取一行,讀取長度為size,若size的大小小于這一行的長度,則返回這一行的部分。file.readlines([size])把文件的每一行作為list的一個成員,讀取后,返回一個list,讀取的行數(shù)為size,若size小于文件總行數(shù),則返回文件部分行。112023/10/287.2.1從文件讀取數(shù)據(jù)當讀取的文件很大時,常常使用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()方法關閉文件。比如,可以用try-finally語句來確保最后能關閉文件,比如:f=open(file_path)try:forlineinf.readlines():print(line)finally:f.close()注意:不能講open()方法放在try里面,因為當打開文件出現(xiàn)異常時,文件對象就無法指向close()操作。132023/10/287.2.2向文件寫入數(shù)據(jù)write():write()方法可以將任何字符串寫入一個打開的文件中。需要注意的是,python字符串可以是二進制數(shù)據(jù),而不僅僅是文字,write()方法不會再字符串結(jié)尾添加換行符(’\n’)。writelines():writelines()也可以將內(nèi)容寫入到打開的文件中,但是,同write()方法一樣,writelines()也只是機械的寫入,不會在每行后面添加任何東西。7.3.1基于win32ui構(gòu)建文件對話框win32ui模塊:從名字上看,該模塊是對Windows系統(tǒng)進行文件對話框操作的,該模塊里面的CreatFileDialog()方法可以很方便快捷的的用于創(chuàng)建打開的對話框,代碼展示如下:importwin32uidlg=win32ui.CreateFileDialog(1)#1表示打開文件對話框dlg.SetOFNInitialDir("D:\\python")#設置打開文件對話框中的初始顯示目錄dlg.DoModal()

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

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

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

[例]使用模塊random中的randint()方法生成1~122的隨機數(shù),以產(chǎn)生字符對應的ASCII碼,然后將滿足一下條件(大寫字母、小寫字母、數(shù)字和一些特殊符號如“\n”、“\r”、“*”、“&”、“^”、“$”)的字符逐一寫進test.txt中,當光標達到10001時停止寫入。7.4應用實例:文本文件操作程序代碼如下: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應用實例:文本文件操作

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

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

溫馨提示

  • 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

提交評論