Python財(cái)經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第3章-Python文件操作-3.3文件的基本操作_第1頁(yè)
Python財(cái)經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第3章-Python文件操作-3.3文件的基本操作_第2頁(yè)
Python財(cái)經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第3章-Python文件操作-3.3文件的基本操作_第3頁(yè)
Python財(cái)經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第3章-Python文件操作-3.3文件的基本操作_第4頁(yè)
Python財(cái)經(jīng)應(yīng)用-編程基礎(chǔ)、數(shù)據(jù)分析與可視化課件 第3章-Python文件操作-3.3文件的基本操作_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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財(cái)經(jīng)應(yīng)用:編程基礎(chǔ)、數(shù)據(jù)分析與可視化第三章Python文件操作中國(guó)農(nóng)業(yè)大學(xué)李輝01

文件相關(guān)的基本概念02

文件夾與目錄操作03

文件的基本操作04

CSV文件讀取與寫入操作01

文件相關(guān)的基本概念02

文件夾與目錄操作03

文件的基本操作04

CSV文件讀取與寫入操作3.3文件的基本操作第三章Python文件操作文件的

基本操作程序中對(duì)文件的操作一般包括:打開文件、讀取文件、對(duì)文件數(shù)據(jù)進(jìn)行處理、寫入文件和關(guān)閉文件等。在Python語言中,內(nèi)置了強(qiáng)大的文件(File)對(duì)象,以便于對(duì)文件進(jìn)行操作。在使用文件對(duì)象之前,必須使用內(nèi)置的open函數(shù)來創(chuàng)建一個(gè)文件對(duì)象。隨后,便可以利用該對(duì)象提供的一系列方法執(zhí)行文件的基本操作。在文件內(nèi)容構(gòu)成上,信息項(xiàng)是文件的基本組成單位。在Python中,處理文本文件時(shí),信息項(xiàng)是單個(gè)字符;而在處理二進(jìn)制文件時(shí),信息項(xiàng)則是一字節(jié)。文件的讀指針負(fù)責(zé)跟蹤當(dāng)前的讀取位置,它指示了接下來將要讀取的信息項(xiàng)所在的位置;而寫指針則負(fù)責(zé)記錄當(dāng)前的寫入位置,新的信息項(xiàng)將會(huì)從這個(gè)位置開始被寫入文件。文件的基本操作——文件的打開和關(guān)閉文件的打開與新建:打開文件:建立文件對(duì)象和物理文件的關(guān)聯(lián)以及建立文件的各種相關(guān)信息。在Python中,想要操作文件需要先創(chuàng)建或者打開指定的文件并創(chuàng)建文件對(duì)象??梢酝ㄟ^內(nèi)置的open函數(shù)實(shí)現(xiàn):file=open(filename[,mode[,buffering]])參數(shù)說明:file:被創(chuàng)建的文件對(duì)象。filename:要?jiǎng)?chuàng)建或打開文件的文件名稱,需要使用單引號(hào)或雙引號(hào)括起來。如果要打開的文件和當(dāng)前文件在同一個(gè)目錄下,那么直接寫文件名即可,否則需要指定完整路徑。例如,要打開當(dāng)前路徑下的名稱為data.txt的文件,可以使用"data.txt"。mode:可選參數(shù),用于指定文件的打開模式。默認(rèn)的打開模式為只讀(即r)。buffering:可選參數(shù),用于指定讀寫文件的緩沖模式,值為0表示不緩存;值為1表示緩存;如果大于1,則表示緩沖區(qū)的大小。默認(rèn)為緩存模式。文件的基本操作——文件的打開和關(guān)閉文件的打開與新建:open()方法的應(yīng)用場(chǎng)景有如下三種情況:(1)打開與新建文件在默認(rèn)情況下,使用open函數(shù)打開一個(gè)不存在的文件將會(huì)拋出異常。一般在調(diào)用open函數(shù)時(shí),指定mode的參數(shù)值為w、w+、a、a+。這樣,當(dāng)要打開的文件不存在時(shí),就可以創(chuàng)建新的文件了。例如:

f=open('c:\data.txt','w')文件的基本操作——文件的打開和關(guān)閉文件的打開與新建:open()方法的應(yīng)用場(chǎng)景有如下三種情況:(2)以二進(jìn)制形式打開文件使用open函數(shù)不僅可以以文本的形式打開文本文件,而且可以以二進(jìn)制形式打開非文本文件,如圖片文件、音頻文件、視頻文件等。例如,創(chuàng)建一個(gè)名稱為picture.jpg的圖片文件,并且應(yīng)用open函數(shù)以二進(jìn)制方式打開該文件。例如:

f=open('picture.jpg','rb')文件的基本操作——文件的打開和關(guān)閉文件的打開與新建:open()方法的應(yīng)用場(chǎng)景有如下三種情況:(3)打開文件時(shí)指定編碼方式在使用open函數(shù)打開文件時(shí),默認(rèn)采用GBK編碼,當(dāng)被打開的文件不是GBK編碼時(shí),也將拋出異常。一般可以通過直接修改文件的編碼,或者在打開文件時(shí),直接指定使用的編碼方式。推薦采用后一種方法。比如:打開采用UTF-8編碼保存的data.txt文件,可以使用下面的代碼:

f=open('data.txt','r',encoding='utf-8')文件的基本操作——文件的打開和關(guān)閉文件關(guān)閉:打開文件后,需要及時(shí)關(guān)閉,以免對(duì)文件造成不必要的破壞。關(guān)閉文件可以使用文件對(duì)象的close()方法實(shí)現(xiàn)。close()方法的語法格式如下:file.close()file:打開的文件對(duì)象。文件關(guān)閉后可保證正常釋放該文件對(duì)象所占用的系統(tǒng)資源。例如,釋放文件資源后,可使用記事本對(duì)文本文件進(jìn)行編輯等操作。close()方法先刷新緩沖區(qū)中還沒有寫入的信息,然后再關(guān)閉文件,這樣可以將沒有寫入文件的內(nèi)容寫入文件中。關(guān)閉文件后,就不能再寫入操作了。文件的基本操作——文件的讀取與寫入使用open函數(shù)成功打開文件后,會(huì)返回一個(gè)TextIOWrapper對(duì)象,然后就可以調(diào)用該對(duì)象中的方法對(duì)文件進(jìn)行操作。TextIOWrapper對(duì)象有如下4個(gè)常用方法:1.write(string)方法:將字符串string的內(nèi)容寫到f對(duì)應(yīng)的文件中,并返回寫入的字符數(shù)。write語句不會(huì)自動(dòng)換行,如果需要換行,則要使用換行符'\n'。文件的基本操作——文件的讀取與寫入使用open函數(shù)成功打開文件后,會(huì)返回一個(gè)TextIOWrapper對(duì)象,然后就可以調(diào)用該對(duì)象中的方法對(duì)文件進(jìn)行操作。TextIOWrapper對(duì)象有如下4個(gè)常用方法:2.read(size)方法:該方法返回一個(gè)字符串,內(nèi)容為長(zhǎng)度為size的文本。數(shù)字類型參數(shù)size表示讀取的字符數(shù),可以省略。如果省略size參數(shù),則表示讀取文件所有內(nèi)容并返回。如果已到達(dá)文件的末尾,read()將返回一個(gè)空字符串('')。【例3-9】read(size)方法演示文本文件的讀取操作示例。

f=open('C:\data.txt','r')#文件內(nèi)容如果換行,底層有\(zhòng)n,會(huì)有字節(jié)占位,導(dǎo)致read書寫參數(shù)讀取出來的內(nèi)容#與眼睛看到的個(gè)數(shù)和參數(shù)值不匹配#read不寫參數(shù)表示讀取所有#print(f.read())print(f.read(10))f.close()文件的基本操作——文件的讀取與寫入使用open函數(shù)成功打開文件后,會(huì)返回一個(gè)TextIOWrapper對(duì)象,然后就可以調(diào)用該對(duì)象中的方法對(duì)文件進(jìn)行操作。TextIOWrapper對(duì)象有如下4個(gè)常用方法:3.seek(offset[,whence])方法:seek(offset[,whence])方法用于調(diào)整文件指針的位置。參數(shù)說明:offset:這是一個(gè)整數(shù)值,代表文件指針需要移動(dòng)的偏移量,以字節(jié)為單位。正值表示將指針向文件尾部方向移動(dòng),而負(fù)值則表示向文件頭部方向移動(dòng)。需要注意的是,若要從當(dāng)前位置或文件末尾以外的位置開始計(jì)算偏移,僅在二進(jìn)制模式(b模式)下,偏移的起始位置才能是非零值。whence:這是一個(gè)可選參數(shù),其默認(rèn)值為0。它用于指定offset參數(shù)的參照點(diǎn)。具體來說,0表示從文件的開頭開始計(jì)算偏移量,1表示從當(dāng)前文件指針的位置開始計(jì)算,而2則表示從文件的末尾開始計(jì)算偏移量。文件的基本操作——文件的讀取與寫入【例3-10】利用seek()方法在讀取文件時(shí)移動(dòng)位置的使用示例。

f=open('text.txt','a+')#1.改變讀取數(shù)據(jù)開始位置f.seek(2,0)#2.把文件指針放結(jié)尾(無法讀取數(shù)據(jù))f.seek(0,2)#3.改變文件指針位置,做到可以讀取出來數(shù)據(jù)#f.seek(0,0)f.seek(0)con=f.read()print(con)f.close()文件的基本操作——文件的讀取與寫入運(yùn)行結(jié)果如下:

HilifeisshortIwanttolearnPython文件的基本操作——文件的讀取與寫入使用open函數(shù)成功打開文件后,會(huì)返回一個(gè)TextIOWrapper對(duì)象,然后就可以調(diào)用該對(duì)象中的方法對(duì)文件進(jìn)行操作。TextIOWrapper對(duì)象有如下4個(gè)常用方法:4.close()方法:該方法實(shí)現(xiàn)關(guān)閉文件,對(duì)文件進(jìn)行讀寫操作后,關(guān)閉文件是一個(gè)好習(xí)慣。【例3-11】隨機(jī)訪問二進(jìn)制文件,并通過close()關(guān)閉文件的示例。

importosos.chdir('c:\\PythonPractice')f=open('data.txt','rb+')print(f.write(b'Loveyouinmyheart'))print(f.seek(5))print(f.read(3))print(f.seek(-5,2))print(f.read(5))f.close()文件的基本操作——文件的讀取與寫入

運(yùn)行結(jié)果如下:

205b'you'15b'heart'本例以二進(jìn)制讀/寫方式打開空的文本文件C:\python\'data.txt,并向該文件中寫入20個(gè)二進(jìn)制數(shù)形式的字符。然后通過seek語句將指針從文件頭開始移動(dòng)5字節(jié),1字節(jié)對(duì)應(yīng)1個(gè)字符,再?gòu)牡?字節(jié)開始讀取3字節(jié),對(duì)應(yīng)的字符為b’you’。之后又將指針從文件尾部開始向左移動(dòng)5字節(jié),定位在’heart’之前,再讀取5字節(jié)得到對(duì)應(yīng)的字符b'heart'。文件的基本操作——按行對(duì)文件內(nèi)容讀寫1.writelines()方法該方法需要通過制定一個(gè)字符串類型的列表,該方法會(huì)將列表中的每一個(gè)元素值作為單獨(dú)的一行寫入文件。注意:在Python中,沒有writeline()方法,寫一行文本需要直接使用write方法。【例3-12】利用writelines()方法演示文件寫入操作的應(yīng)用示例。

fo=open(".\\text.txt","w")print("讀寫的文件名:",)seq=["Hello\n","lifeisshort\n","IwanttolearnPython\n"]line=fo.writelines(seq)fo.close()運(yùn)行結(jié)果如下:

讀寫的文件名:.\text.txt文件的基本操作——按行對(duì)文件內(nèi)容讀寫2.readline()方法該方法返回一個(gè)字符串,用于文件指針當(dāng)前位置讀取一行文本,即遇到行結(jié)束符停止讀取文本,但讀取的內(nèi)容包含了結(jié)束符。如果已到達(dá)文件的末尾,readline()將返回一個(gè)空字符串('')。如果是一個(gè)空行,則返回'\n'?!纠?-13】利用readline()方法讀取text.txt文件。

f=open("text.txt")whileTrue:lines=f.readline()iflines=='':breakelse:print(lines)print(type(lines))f.close()文件的基本操作——按行對(duì)文件內(nèi)容讀寫運(yùn)行結(jié)果如下:

HellolifeisshortIwanttolearnPython<class'str'>文件的基本操作——按行對(duì)文件內(nèi)容讀寫3.readlines()方法從文件指針當(dāng)前的位置讀取后面所有的數(shù)據(jù),并將這些數(shù)據(jù)按行結(jié)束符分隔后,放到列表中返回?!纠?-14】利用readlines()方法讀取text.txt文件。

f=open("text.txt","r")data=f.readlines()print(data)print(type(data))f.close()運(yùn)行結(jié)果如下:

['Hello\n','lifeisshort.\n','IwanttolearnPython\n']<class'list'>read()、readline()和readlines()三者間的區(qū)別:read([size])方法:從文件當(dāng)前位置起讀取size字節(jié),若無參數(shù)size,則表示讀取至文件結(jié)束為止,它范圍為字符串對(duì)象。即全部取出,放到字符串里。readline()方法:該方法每次讀出一行內(nèi)容,所以,讀取時(shí)占用內(nèi)存小,比較適合大文件,該方法返回一個(gè)字符串對(duì)象。即將內(nèi)存空間里的內(nèi)容一次性只讀一行,放到一個(gè)字符串里。readlines()方法:讀取整個(gè)文件所有行,保存在一個(gè)列表(list)變量中,每行作為一個(gè)元素,但讀取大文件會(huì)比較占內(nèi)存。即將內(nèi)存空間里的內(nèi)容一次性全部取出來,放到一個(gè)列表里。文件的基本操作——按行對(duì)文件內(nèi)容讀寫文件的基本操作——使用fileinput對(duì)象讀取大文件操作刪除目錄:如果需要讀取一個(gè)大文件,使用readlines()方法會(huì)占用太多內(nèi)存,因?yàn)樵摲椒〞?huì)一次性將文件所有的內(nèi)容都讀取到列表中,列表中的數(shù)據(jù)都需要放到內(nèi)存中,所以非常占內(nèi)存。為了解決這個(gè)問題,可以使用for循環(huán)和readline()方法逐行讀取,也可以使用fileinput模塊中的input()方法讀取指定的文件。input()方法返回一個(gè)fileinput對(duì)象,通過fileinput對(duì)象的相應(yīng)方法可以對(duì)指定文件進(jìn)行讀取,fileinput對(duì)象使用的緩存機(jī)制,并不會(huì)一次性讀取文件的所有內(nèi)容,所以比reandlines函數(shù)更節(jié)省內(nèi)存資源。fileinput.input()的語法格式如下:fileinput.input(files='filename',inplace=False,backup='',bufsize=0,mode='r',openhook=None)文件的基本操作——使用fileinput對(duì)象讀取大文件操作刪除目錄:fileinput.input()的語法格式如下:fileinput.input(files='filename',inplace=False,backup='',bufsize=0,mode='r',openhook=None)參數(shù)說明:files:此參數(shù)接收一個(gè)文件路徑列表或單個(gè)文件路徑。若不指定,則默認(rèn)讀取標(biāo)準(zhǔn)輸入(stdin)。若需處理多個(gè)文件,可傳入列表,例如['1.txt','2.txt',...]。inplace:此參數(shù)決定是否將處理后的內(nèi)容直接覆蓋原文件。默認(rèn)為False,表示不覆蓋原文件。若設(shè)置為True,則輸出的內(nèi)容將直接寫入原文件,此時(shí)請(qǐng)謹(jǐn)慎操作,以免造成數(shù)據(jù)丟失。backup:當(dāng)inplace設(shè)置為True時(shí),此參數(shù)用于指定備份文件的擴(kuò)展名。僅需提供擴(kuò)展名,例如.bak。若備份文件已存在,則原有備份將被新備份替換。文件的基本操作——使用fileinput對(duì)象讀取大文件操作刪除目錄:fileinput.input()的語法格式如下:fileinput.input(files='filename',inplace=False,backup='',bufsize=0,mode='r',openhook=None)參數(shù)說明:bufsize:定義文件操作的緩沖區(qū)大小。默認(rèn)值為0,通常情況下保持默認(rèn)即可。對(duì)于處理大型文件,可能需要調(diào)整此參數(shù)以優(yōu)化性能。mode:指定文件的打開模式,默認(rèn)為'r',即只讀模式。根據(jù)具體需求,可更改為其他模式,如'rb'(二進(jìn)制讀取模式)。openhook:這是一個(gè)可選的鉤子函數(shù),允許自定義文件打開的行為,例如設(shè)置文件的編碼方式等。若無須特殊處理,可留空為None。文件的基本操作——使用fileinput對(duì)象讀取大文件操作刪除目錄:fileinput.input典型用法:importfileinputforlineinfileinput.input():process(line)fileinput模塊的一些常用函數(shù)及其功能:fileinput.input():此函數(shù)返回一個(gè)可迭代的對(duì)象,可以用于for

溫馨提示

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