




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章
文件操作Chapter7FileOperationCONTENT目錄01讀寫(xiě)文本文件02讀寫(xiě)CSV文件03讀寫(xiě)JSON文件04操作文件和文件夾01讀寫(xiě)文本文件對(duì)于文本文件(TXT)而言,Python的基本操作步驟是:先打開(kāi)一個(gè)文件,生成一個(gè)文件對(duì)象;再利用各種方法操作這個(gè)文件對(duì)象;最后關(guān)閉文件,釋放資源。1、open()函數(shù)可以通過(guò)Python內(nèi)置函數(shù)open()打開(kāi)文件,并生成一個(gè)文件對(duì)象。open()函數(shù)的基本格式為:open(<文件名>,<打開(kāi)模式>,encoding='utf-8')其中:<文件名>指定要打開(kāi)文件的名稱或含有完整路徑的文件名。<打開(kāi)模式>用來(lái)控制打開(kāi)文件的方式,默認(rèn)值是'r'和't',分別代表只讀和文本文件模式。除此之外,還有'w'(覆蓋寫(xiě)模式)、'a'(追加寫(xiě)模式)、'x'(創(chuàng)建寫(xiě)模式)、'b'(二進(jìn)制文件模式)。'b'和't'可以和其他幾種讀寫(xiě)模式組合使用,例如'rt'代表文本只讀、'wb'代表二進(jìn)制覆蓋寫(xiě)等等。encoding指的是文件編碼的類型。例如:txtf1=open('d:/height.txt','w')指以覆蓋寫(xiě)模式打開(kāi)height.txt文件,并生成一個(gè)名為txtf1的文件對(duì)象。7.1讀寫(xiě)文本文件2、close()方法當(dāng)文件操作完畢后,一定要用close()方法將其關(guān)閉,釋放其占用的系統(tǒng)資源。其基本格式為:<文件對(duì)象名>.close()例如txtf1.close()的功能就是將txtf1這個(gè)文件對(duì)象關(guān)閉。7.1讀寫(xiě)文本文件3、文件對(duì)象的常用操作方法(1)read()方法read()方法可以讀取文件中一定量的數(shù)據(jù),并以字符串的形式返回。基本格式為:<文件對(duì)象名>.read(<讀取長(zhǎng)度>)其中:<讀取長(zhǎng)度>代表要讀取的內(nèi)容長(zhǎng)度,如果不寫(xiě)則代表整個(gè)文件。7.1讀寫(xiě)文本文件7.1讀寫(xiě)文本文件【例7-1】讀取song.txtIn[1]:f1=open('song.txt','r',encoding='utf-8')
txt=f1.read(25)
print(txt)
f1.close()Out[1]:我愛(ài)你,中國(guó)我愛(ài)你,中國(guó)我愛(ài)你春天蓬勃的秧苗(2)readline()方法readline()方法的功能是從文件中讀取一行內(nèi)容,并以字符串形式返回。基本格式為:<文件對(duì)象名>.readline(<讀取長(zhǎng)度>)其中:<讀取長(zhǎng)度>代表讀取該行中的長(zhǎng)度,如果不寫(xiě)則代表整行。readline()方法和循環(huán)語(yǔ)句相結(jié)合,可以實(shí)現(xiàn)文件內(nèi)容的遍歷。7.1讀寫(xiě)文本文件【例7-2】讀取song.txt中的行In[1]:f1=open('song.txt','r',encoding='utf-8')
txt=f1.readline()
print(txt)
f1.close()Out[1]:我愛(ài)你,中國(guó)7.1讀寫(xiě)文本文件【例7-3】遍歷song.txt,輸出每行長(zhǎng)度In[1]:f1=open('song.txt','r',encoding='utf-8')
forlineinf1:
print(len(line))
f1.close()Out[1]:7711以下結(jié)果略(3)readlines()方法readlines()方法的功能是從文件中讀取行,并以列表形式返回,列表的每個(gè)元素就是文件的一行。基本格式為:<文件對(duì)象名>.readlines(<讀取行數(shù)>)其中:<讀取行數(shù)>代表讀取多少行,如果不寫(xiě)則代表所有行。7.1讀寫(xiě)文本文件7.1讀寫(xiě)文本文件【例7-4】讀取song.txt,以列表返回每行In[1]:f1=open('song.txt','r',encoding='utf-8')
listf1=f1.readlines()
print(listf1)
f1.close()Out[1]:['我愛(ài)你,中國(guó)\n','我愛(ài)你,中國(guó)\n','我愛(ài)你春天蓬勃的秧苗\n','我愛(ài)你秋日金黃的碩果\n','我愛(ài)你青松氣質(zhì)\n','我愛(ài)你紅梅品格\n','我愛(ài)你家鄉(xiāng)的甜蔗\n','好像乳汁滋潤(rùn)著我的心窩\n','我愛(ài)你,中國(guó)\n','我愛(ài)你,中國(guó)\n','我要把最美的歌兒獻(xiàn)給你\n','我的母親,我的祖國(guó)!\n','我愛(ài)你,中國(guó)\n','我愛(ài)你,中國(guó)\n','我愛(ài)你碧波滾滾的南海\n','我愛(ài)你白雪飄飄的北國(guó)\n','我愛(ài)你森林無(wú)邊\n','我愛(ài)你群山巍峨\n','我愛(ài)你淙淙的小河\n','蕩著清波從我的夢(mèng)中流過(guò)\n','我愛(ài)你,中國(guó)\n','我愛(ài)你,中國(guó)\n','我要把美好的青春獻(xiàn)給你\n','我的母親,我的祖國(guó)!'](4)write()方法write()方法可以將指定字符串寫(xiě)入文件。7.1讀寫(xiě)文本文件【例7-5】創(chuàng)建文件,寫(xiě)入指定字符串In[1]:str1='Thisistheappendingtext.'
f1=open('sample.txt','x')
f1.write(str1)
f1.close()(5)writelines()方法writelines()方法可以將一個(gè)完全由字符串組成的列表寫(xiě)入到文件中。7.1讀寫(xiě)文本文件【例7-6】In[1]:f1=open('sample2.txt','w')
list1=['眾鳥(niǎo)高飛盡,',\
'孤云獨(dú)去閑。',\
'相看兩不厭,',\
'只有敬亭山。']
f1.writelines(list1)
f1.close()(6)seek()方法seek()方法可以用來(lái)定位當(dāng)前文件操作的指針位置,基本格式為:<文件對(duì)象名>.seek(<offset>,<whence>)其中:<offset>表示從whence位置增加的量。<whence>表示參考位置,默認(rèn)值為0,即文件起始位置,1代表當(dāng)前位置,2代表文件結(jié)尾。7.1讀寫(xiě)文本文件【例7-7】改變文件當(dāng)前操作位置In[1]:f1=open('sample.txt','r')
f1.seek(8)#定位到起始位置后的第8個(gè)字符
str2=f1.read(3)#從定位到的位置開(kāi)始讀取3個(gè)字符
print(str2)
f1.close()Out[1]:the4、with語(yǔ)句在前面的例子中,每次文件操作完成后,都需要使用close()方法關(guān)閉文件以釋放資源。其實(shí),在文件操作中還可以使用Python提供的with關(guān)鍵字,它的好處是無(wú)需再使用close()方法關(guān)閉文件,即使在文件處理中發(fā)生異常也可以。7.1讀寫(xiě)文本文件【例7-8】In[1]:withopen('sample2.txt','r')asf2:
str2=f2.read()
print(str2)Out[1]:眾鳥(niǎo)高飛盡,孤云獨(dú)去閑。相看兩不厭,只有敬亭山。02讀寫(xiě)CSV文件CSV文件是表格處理軟件和數(shù)據(jù)庫(kù)常見(jiàn)的導(dǎo)入導(dǎo)出格式,在數(shù)據(jù)分析處理中有著廣泛的應(yīng)用。CSV文件屬于文本文件,其數(shù)據(jù)都是以文本形式存儲(chǔ)的。CSV是Comma-SeparatedValues的縮寫(xiě),也就是說(shuō),此類文件一般使用英文半角逗號(hào)作為分隔符。文件中的每一行是一條記錄,行與行之間用換行符分隔。在Python中,可以使用csv標(biāo)準(zhǔn)模塊來(lái)讀取和操作CSV文件。1、打開(kāi)和讀取CSV文件可以使用open()函數(shù)打開(kāi)CSV文件,只是注意需要將newline參數(shù)設(shè)置為空白字符串。在打開(kāi)文件后,可以使用csv模塊的reader()函數(shù)讀取文件內(nèi)容,其返回值是一個(gè)_csv.reader對(duì)象。采用for循環(huán)遍歷該對(duì)象,即可讀取文件中的每一條記錄,每條記錄都是一個(gè)列表。7.2讀寫(xiě)CSV文件【例7-9】In[1]:importcsv
withopen('HW.csv','r',newline='')ascsvfile_1:
rd=csv.reader(csvfile_1)
forrecordinrd:
print(record)Out[1]:['id','height','weight']['1001','172','65']['1002','156','50']['1003','183','80']2、寫(xiě)入CSV文件可以使用csv模塊的writer()函數(shù)返回一個(gè)_csv.writer類型的對(duì)象,再利用其writerow()方法將一條記錄寫(xiě)入文件。參數(shù)newline用于控制文件寫(xiě)入模式下的換行符處理,換行符可以是不同的字符,例如\n(LF,Unix風(fēng)格)或\r\n(CRLF,Windows風(fēng)格)。可以如下取值:None:使用系統(tǒng)默認(rèn)的換行符模式。'':禁用換行符轉(zhuǎn)換,保持原始換行符不變。'\n':強(qiáng)制使用LF(\n)作為換行符,無(wú)論當(dāng)前操作系統(tǒng)是什么。7.2讀寫(xiě)CSV文件【例7-10】In[1]:importcsv
str1=['1004',165,55]
str2=['1005',157,75]
withopen('HW.csv','a',newline='')ascsvfile1:
wt=csv.writer(csvfile1)
wt.writerow(str1)
wt.writerow(str2)如果想一次性寫(xiě)入多條記錄,需要使用writerows()方法。7.2讀寫(xiě)CSV文件【例7-11】In[1]:importcsv
str1=[['1006',135,30],['1007',163,45]]
withopen('HW.csv','a',newline='')ascsvfile1:
wt=csv.writer(csvfile1)
wt.writerows(str1)03讀寫(xiě)JSON文件JSON(JavaScriptObjectNotation)是用JavaScript語(yǔ)法來(lái)描述數(shù)據(jù)結(jié)構(gòu)的一種輕量級(jí)的數(shù)據(jù)交換格式,易于人類閱讀和編寫(xiě),也易于機(jī)器解析和生成,且適用于不同的編程語(yǔ)言。JSON格式主要包括數(shù)組和對(duì)象兩種。數(shù)組格式使用一對(duì)中括號(hào)([])包裝,元素之間用逗號(hào)間隔,例如:[35,45,21,44],數(shù)組格式在Python中被解析為列表;對(duì)象格式使用一對(duì)花括號(hào)({})包裝,每個(gè)對(duì)象成員由鍵值對(duì)表示,用冒號(hào)(:)分隔,而對(duì)象成員之間則用逗號(hào)(,)分隔,例如:{ “id”:[“1001”,“1002”,“1003”,“1004”,“1005”], “Chinese”:[90,83,87,95,69], “Math”:[99,70,89,97,85]}對(duì)象格式在Python中被解析為字典。1、序列化序列化(serialization)是指將數(shù)據(jù)和對(duì)象轉(zhuǎn)換成可存儲(chǔ)或網(wǎng)絡(luò)傳輸格式的過(guò)程,一般為JSON或XML格式。在Python中,可以使用json標(biāo)準(zhǔn)模塊中的dumps()方法對(duì)數(shù)據(jù)進(jìn)行序列化,轉(zhuǎn)換成JSON格式。其基本格式為:json.dumps(<對(duì)象>,sort_keys=False,indent=None)其中:<對(duì)象>可以是Python的列表或字典類型sort_keys參數(shù)可以對(duì)字典數(shù)據(jù)按照keys排序,默認(rèn)是不排序indent參數(shù)可以給序列化后的數(shù)據(jù)增加縮進(jìn)7.3讀寫(xiě)JSON文件7.3讀寫(xiě)JSON文件【例7-12】序列化In[1]:importjson
list1=[1,3,'abc']dict1={'score':[95,84,87],'id':['1001','1003','1002']}
json1=json.dumps(list1)
print(json1)Out[1]:[1,3,"abc"]In[2]:json2=json.dumps(dict1)
print(json2)Out[2]:{"score":[95,84,87],"id":["1001","1003","1002"]}7.3讀寫(xiě)JSON文件【例7-12續(xù)】序列化In[3]:json3=json.dumps(dict1,sort_keys=True,indent=2)
print(json3)Out[3]:{"id":["1001","1003","1002"],"score":[95,84,87]}dumps()方法還有一個(gè)變體,即dump()方法。它也可以進(jìn)行數(shù)據(jù)序列化,只不過(guò)會(huì)將結(jié)果輸出到一個(gè)文件里。程序運(yùn)行后,會(huì)將dict1字典數(shù)據(jù)序列化,并寫(xiě)入默認(rèn)路徑下的serial.json文件中。7.3讀寫(xiě)JSON文件【例7-13】In[1]:importjson
dict1={'id':['1001','1002','1003'],'score':[95,87,84]}
withopen('serial.json','x')ass:#x為寫(xiě)模式
json.dump(dict1,s,indent=3)#文件內(nèi)容見(jiàn)左圖2、反序列化反序列化(deserialization)是指將JSON或XML格式數(shù)據(jù)轉(zhuǎn)換成Python數(shù)據(jù)類型的過(guò)程。可以使用json標(biāo)準(zhǔn)模塊中的loads()方法進(jìn)行反序列化,將JSON數(shù)據(jù)讀取出來(lái)。其基本格式為:json對(duì)象.loads(<JSON格式的數(shù)據(jù)>)7.3讀寫(xiě)JSON文件【例7-14】In[1]:importjson
dict_loads=json.loads(json2)
dict_loadsOut[1]:{'id':['1001','1002','1003'],'score':[95,87,84]}loads(方法也有一個(gè)變體,即load()方法,它可以從JSON文件里讀取數(shù)據(jù)進(jìn)行反序列化操作。7.3讀寫(xiě)JSON文件【例7-15】In[1]:importjson
withopen('serial.json','r')ass:
deserial=json.load(s)
print(deserial)Out[1]:{'id':['1001','1002','1003'],'score':[95,87,84]}04操作文件和文件夾Python的os標(biāo)準(zhǔn)庫(kù)是與操作系統(tǒng)交互的一個(gè)接口,其中包括資源管理、路徑管理、命令行操作、流程管理、硬件環(huán)境參數(shù)獲取等功能在內(nèi)的可調(diào)用函數(shù)。可以通過(guò)importos的方式導(dǎo)入os庫(kù)。請(qǐng)不要使用“fromosimport*”這種方式導(dǎo)入os庫(kù),因?yàn)閛s庫(kù)中包含一些與Python內(nèi)置函數(shù)同名的函數(shù),比如open()函數(shù),這種導(dǎo)入方式會(huì)造成混亂。1、getcwd()函數(shù)和chdir()函數(shù)getcwd()函數(shù)和chdir()函數(shù)的功能分別是返回、修改當(dāng)前工作目錄。如果修改的目錄不存在,會(huì)返回FileNotFoundError錯(cuò)誤。7.4操作文件和文件夾【例7-16】In[1]:importos
os.getcwd()Out[1]:'C:\\Python3'In[2]:os.chdir('d:\python39')
os.getcwd()Out[2]:'d:\\python39'2、mkdir()函數(shù)和makedirs()函數(shù)mkdir()函數(shù)的功能是創(chuàng)建單級(jí)目錄,可以采用相對(duì)路徑或絕對(duì)路徑,一般采用相對(duì)路徑。如果當(dāng)前目錄已存在,會(huì)返回FileExistsError錯(cuò)誤;如果給出的路徑不存在,則返回FileNotFoundError錯(cuò)誤。mkdir()函數(shù)只能創(chuàng)建一層目錄,如果要?jiǎng)?chuàng)建多層目錄,需要使用makedirs()函數(shù)。如果當(dāng)前目錄已存在,也會(huì)返回FileExistsError錯(cuò)誤。如果將其exist_ok參數(shù)設(shè)置為T(mén)rue,則會(huì)忽略這個(gè)錯(cuò)誤。7.4操作文件和文件夾【例7-17】In[1]:importos
os.mkdir('test')In[2]:os.makedirs('level1\level2\leaf')3、listdir()listdir()函數(shù)的功能是以列表形式返回某個(gè)路徑下所有文件夾和文件的名稱,這對(duì)于批量讀取多個(gè)數(shù)據(jù)文件的任務(wù)非常有用。如例7-18中,其返回結(jié)果表示D:\python39這個(gè)路徑下有l(wèi)evel1和test兩個(gè)文件夾和一個(gè)名為sample.txt文件。7.4操作文件和文件夾【例7-18】In[1]:importos
os.listdir('D:\python39')Out[1]:['level1','sample.txt','test']4、rename()rename(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇安全技術(shù)職業(yè)學(xué)院《腫瘤放射治療學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 老年人臥床的護(hù)理措施
- 新疆農(nóng)業(yè)大學(xué)《多元音樂(lè)文化與世界名曲欣賞》2023-2024學(xué)年第一學(xué)期期末試卷
- 河北省張家口市涿鹿縣2024-2025學(xué)年初三第一次模擬考試(化學(xué)試題文)試卷含解析
- 2025年山東省萊蕪市萊城區(qū)茶業(yè)口鎮(zhèn)腰關(guān)中學(xué)初三下學(xué)期十月月考化學(xué)試題含解析
- 廣東職業(yè)技術(shù)學(xué)院《生物納米與高分子材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)《馬克思基本原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖南網(wǎng)絡(luò)工程職業(yè)學(xué)院《地下工程結(jié)構(gòu)》2023-2024學(xué)年第一學(xué)期期末試卷
- 北京科技經(jīng)營(yíng)管理學(xué)院《土力學(xué)理論與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東工業(yè)大學(xué)《電路板設(shè)計(jì)CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣州2025年廣東廣州海珠區(qū)新港街道第一批雇員招聘5人筆試歷年參考題庫(kù)附帶答案詳解
- 受限空間安全培訓(xùn)
- 兒童口腔保健知識(shí)宣教
- 2025屆江蘇省蘇錫常鎮(zhèn)四市高三下學(xué)期教學(xué)情況調(diào)(一)(一模)英語(yǔ)+答案
- 專題13 熱學(xué)計(jì)算題(解析版)-2025年高考物理二輪熱點(diǎn)題型歸納與變式演練(新高考用)
- (二模)蘇北七市2025屆高三第二次調(diào)研測(cè)試語(yǔ)文試卷(含答案)
- 兒童發(fā)展問(wèn)題的咨詢與輔導(dǎo)-案例1-5-國(guó)開(kāi)-參考資料
- 安全生產(chǎn)法律法規(guī)匯編(2025版)
- 2024年晉中職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 會(huì)見(jiàn)筆錄(故意傷害審查起訴階段)
- 工程造價(jià)咨詢項(xiàng)目招標(biāo)文件(范本)
評(píng)論
0/150
提交評(píng)論