




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章文件操作文件的概念文件的打開與關閉文本文件的操作二進制文件的操作CSV文件的操作文件管理方法文件操作應用舉例1.文件格式文件(file)是存儲在外部介質上一組相關信息的集合。根據(jù)文件數(shù)據(jù)的組織形式,Python的文件可分為文本文件和二進制文件。文本文件的每一個字節(jié)放一個ASCII代碼,代表一個字符。二進制文件是把內存中的數(shù)據(jù)按其在內存中的存儲形式原樣輸出到磁盤上存放。例如,圖形圖像文件、音頻視頻文件、可執(zhí)行文件等都是常見的二進制文件。10.1文件的概念2.文件操作無論是文本文件還是二進制文件,其操作過程是一樣的,即首先打開文件并創(chuàng)建文件對象,然后通過該文件對象對文件內容進行讀寫操作,最后關閉文件。文件的讀(read)操作就是從文件中取出數(shù)據(jù),再輸入到計算機內存儲器;文件的寫(write)操作是向文件寫入數(shù)據(jù),即將內存數(shù)據(jù)輸出到磁盤文件。10.2文件的打開與關閉10.2.1打開文件所謂打開文件是在程序和操作系統(tǒng)之間建立起聯(lián)系,程序把所要操作文件的一些信息通知給操作系統(tǒng)。1.open()函數(shù)open()函數(shù)的一般調用格式為:文件對象=open(文件說明符[,打開方式][,緩沖區(qū)])其中,文件說明符指定打開的文件名,可以包含盤符、路徑和文件名,它是一個字符串。open()函數(shù)以指定的方式打開指定的文件,文件操作方式符的含義是:(1)用“r”方式打開文件時,只能從文件向內存輸入數(shù)據(jù),而不能從內存向該文件寫數(shù)據(jù)。(2)用“w”方式打開文件時,只能從內存向該文件寫數(shù)據(jù),而不能從文件向內存輸入數(shù)據(jù)。(3)如果希望向一個已經存在的文件的尾部添加新數(shù)據(jù)(保留原文件中已有的數(shù)據(jù)),則應用“a”方式打開。(4)用“r+”,“w+”,“a+”方式打開的文件可以寫入和讀取數(shù)據(jù)。(5)用類似的方法可以打開二進制文件。2.文件對象的屬性文件屬性的引用方法為:文件對象名.屬性名看下面的程序。fo=open("file.txt","wb")print("Nameofthefile:",)print("Closedornot:",fo.closed)print("Openingmode:",fo.mode)程序運行結果如下:Nameofthefile:file.txtClosedornot:FalseOpeningmode:wb10.2.2關閉文件用文件對象的close()方法關閉文件,其調用格式為:close()close()方法用于關閉已打開的文件,將緩沖區(qū)中尚未存盤的數(shù)據(jù)寫入磁盤,并釋放文件對象。fo=open("file.txt","wb")print("Nameofthefile:",)fo.close()10.3文本文件的操作10.3.1文本文件的讀取1.read()方法read()方法的用法如下:變量=文件對象.read()其功能是讀取從當前位置直到文件末尾的內容,并作為字符串返回,賦給變量。如果是剛打開的文件對象,則讀取整個文件。read()方法通常將讀取的文件內容存放到一個字符串變量中。read()方法也可以帶有參數(shù),其用法如下:變量=文件對象.read(count)其功能是讀取從文件當前位置開始的count個字符,并作為字符串返回,賦給變量。如果文件結束,就讀取到文件結束為止。如果count大于文件從當前位置到末尾的字符數(shù),則僅返回這些字符。例10-1已經建立文本文件data.txt,統(tǒng)計文件中元音字母出現(xiàn)的次數(shù)。分析:先讀取文件的全部內容,得到一個字符串,然后遍歷字符串,統(tǒng)計元音字母的個數(shù)。程序如下:infile=open("data.txt","r")#打開文件,準備輸出文本文件s=infile.read()#讀取文件全部字符print(s)#顯示文件內容n=0forcins:#遍歷讀取的字符串ifcin'aeiouAEIOU':n+=1print(n)infile.close()#關閉文件程序運行結果如下:Pythonisveryuseful.ProgramminginPythonisveryeasy.(空一行)152.readline()方法readline()方法的用法如下:變量=文件對象.readline()其功能是讀取從當前位置到行末(即下一個換行符)的所有字符,并作為字符串返回,賦給變量。通常用此方法來讀取文件的當前行,包括行結束符。如果當前處于文件末尾,則返回空串。例10-2已經建立文本文件data.txt,統(tǒng)計文件中元音字母出現(xiàn)的次數(shù)。用readline()方法實現(xiàn)。分析:逐行讀取文件,得到一個字符串,然后遍歷字符串,統(tǒng)計元音字母的個數(shù)。當文件讀取完畢,得到一個空串,控制循環(huán)結束。程序如下:infile=open("data.txt","r")#打開文件,準備輸出文本文件s=infile.readline()#讀取一行n=0whiles!='':#還沒有讀完時繼續(xù)循環(huán)print(s[:-1])#顯示文件內容forcins:#遍歷讀取的字符串ifcin'aeiouAEIOU':n+=1s=infile.readline()#讀取下一行print(n)infile.close()#關閉文件程序運行結果如下:Pythonisveryuseful.ProgramminginPythonisveryeasy.153.readlines()方法readlines()方法的用法如下:變量=文件對象.readlines()其功能是讀取從當前位置直到文件末尾的所有行,并將這些行構成列表返回,賦給變量。列表中的元素即每一行構成的字符串。如果當前處于文件末尾,則返回空列表。例10-3已經建立文本文件data.txt,統(tǒng)計文件中元音字母出現(xiàn)的次數(shù)。用readlines()方法實現(xiàn)。分析:讀取文件所以行,得到一個字符串列表,然后遍歷列表,統(tǒng)計元音字母的個數(shù)。程序如下:infile=open("data.txt","r")#打開文件,準備輸出文本文件ls=infile.readlines()#讀取各行,得到一個列表n=0forsinls:#遍歷列表print(s[:-1])#顯示文件內容forcins:#遍歷列表的字符串元素ifcin'aeiouAEIOU':n+=1print(n)infile.close()#關閉文件程序運行結果如下:Pythonisveryuseful.ProgramminginPythonisveryeasy.1510.3.2文本文件的寫入1.write()方法write()方法的用法如下:文件對象.write(字符串)其功能是在文件當前位置寫入字符串,并返回字符的個數(shù)。例10-4從鍵盤輸入若干字符串,逐個將它們寫入文件data1.txt中,直到輸入“*”時結束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。分析:輸入一個字符串,如果不等于“*”則寫入文件,然后再輸入一個字符串,進行循環(huán)判斷,直到輸入“*”結束循環(huán)。2.writelines()方法writelines()方法的用法如下:文件對象.writelines(字符串元素的列表)其功能是在文件當前位置處依次寫入列表中的所有字符串。例10-5從鍵盤輸入若干字符串,逐個將它們寫入文件data1.txt的尾部,直到輸入“*”時結束。然后從該文件中逐個讀出字符串,并在屏幕上顯示出來。分析:首先以“a”方式打開文件,當前位置定位在文件末尾,可以繼續(xù)寫入文本而不改變原有的文件內容。本例考慮先輸入若干個字符串,并將字符串存入一個列表中,然后通過writelines()方法將全部字符串寫入文件。10.4二進制文件的操作10.4.1文件的定位1.tell()方法tell()方法的用法如下:文件對象.tell()其功能是告訴文件的當前位置,即相對于文件開始位置的字節(jié)數(shù),下一個讀取或寫入操作將發(fā)生在當前位置。例如:>>>fo=open("data.txt","r")>>>fo.tell()02.seek()方法seek()方法的用法如下:文件對象.seek(偏移[,參考點])其功能是更改當前的文件位置。偏移參數(shù)指示要移動的字節(jié)數(shù),移動時以設定的參考點為基準。偏移為正數(shù)表示朝文件尾方向移動,偏移為負數(shù)表示朝文件頭方向移動;參考點指定移動的基準位置。如果參考點被設置為0,這意味著使用該文件的開始處作為基準位置(這是默認的情況),設置為1則是使用當前位置作為基準位置,如果它被設置為2,則該文件的末尾將被作為基準位置。10.4.2二進制文件的讀寫1.read()方法和write()方法二進制文件的讀取與寫入可以使用文件對象的read()和write()方法。例10-6從鍵盤輸入一個字符串,以字節(jié)數(shù)據(jù)寫入二進制文件;從文件末尾到文件頭依次讀取一個字符,對其加密后反向輸出全部字符。加密規(guī)則是,對字符編碼的中間兩個二進制位取反。分析:對中間兩個二進制位取反的辦法是將讀出的字符編碼與二進制數(shù)00011000(也就是十進制數(shù)24)進行異或運算,將異或后的結果寫回原位置。2.struct模塊read()和write()方法以字符串為參數(shù),對于其他類型數(shù)據(jù)需要進行轉換。Python沒有二進制類型,但可以存儲二進制類型的數(shù)據(jù),就是用字符串類型來存儲二進制數(shù)據(jù)。Python中struct模塊的pack()和unpack()方法可以處理這種情況。pack()函數(shù)可以把整型(或者浮點型)打包成二進制的字符串(Python中的字符串可以是任意字節(jié))。3.pickle模塊在pickle模塊中有2個常用的方法:dump()和load()。dump()方法的用法如下:pickle.dump(數(shù)據(jù),文件對象)其功能是直接把數(shù)據(jù)對象轉換為字節(jié)字符串,并保存到文件中。load()方法的的用法如下:變量=pickle.load(文件對象)其功能正好與上面的dump()方法相反。load()方法從文件中讀取字符串,將它們轉換為Python的數(shù)據(jù)對象,可以像使用通常的數(shù)據(jù)一樣來使用它們。1.CSV文件的基本格式逗號分隔值有時也稱為字符分隔值,因為分隔字符也可以不是逗號,其文件以純文本形式存儲表格數(shù)據(jù)。CSV文件由任意數(shù)目的數(shù)據(jù)行組成,每個數(shù)據(jù)行又由一個或多個數(shù)據(jù)字段組成。目前很多應用軟件都支持CSV文件格式。例如,使用Excel可以打開CSV文件,也可以將Excel文件另存為CSV文件。10.5CSV文件的操作csv模塊的reader()函數(shù)可用于讀取CSV文件的數(shù)據(jù),常用的調用格式為:csv.reader(csvfile)其中,參數(shù)csvfile可以是文件對象或列表對象。reader()函數(shù)返回一個csv.reader對象,它是一個可迭代對象,可以使用for循環(huán)依次提取每一行數(shù)據(jù)。還可以使用DictReader()函數(shù)讀取CSV文件,csv.DictReader對象也是一個可迭代對象,也可以使用for循環(huán)依次提取CSV文件的每一行數(shù)據(jù)。與csv.reader對象不同的是,它將返回的結果放到了一個字典中,字典的關鍵字就是表格標題。3.寫入CSV文件csv模塊的writer()函數(shù)用于將列表數(shù)據(jù)寫入CSV文件。操作步驟是,先調用writer()函數(shù)創(chuàng)建csv.writer對象,再調用csv.writer對象的以下兩個方法向CSV文件寫入數(shù)據(jù)。writerow()#一次寫入一行writerows()#一次寫入多行DictWriter()函數(shù)可以將字典對象數(shù)據(jù)寫入到CSV文件中,常用的調用格式為:csv.DictWriter(csvfile,fieldnames)其中,csvfile通常是一個文件對象,fieldnames用于指定標題行的各個字段名。通過csv.DictWriter對象既能調用writerow()和writerows()方法向csv文件寫入數(shù)據(jù),也可以調用writeheaders()方法把標題行寫入文件。1.文件重命名rename()方法實現(xiàn)文件重命名,它的一般格式為:os.rename("當前文件名","新文件名")例如,將文件test1.txt重命名為test2.txt,命令如下。>>>importos>>>os.rename("test1.txt","test2.txt")10.6文件管理方法2.文件刪除可以使用remove()方法來刪除文件,一般格式為:os.remove("文件名")例如,刪除現(xiàn)有文件test2.txt,命令如下。>>>importos>>>os.remove("text2.txt")3.Python中的目錄操作所有的文件都包含不同的目錄中,os模塊有幾種方法,可以幫助創(chuàng)建、刪除和更改目錄。1)mkdir()方法mkdir()方法在當前目錄下創(chuàng)建目錄,一般格式為:os.mkdir("新目錄名")例如,在當前盤當前目錄下創(chuàng)建test目錄,命令如下。>>>importos>>>os.mkdir("test")2)chdir()方法可以使用chdir()方法來改變當前目錄,一般格式為:os.chdir("要成為當前目錄的目錄名")例如,將“d:\home\newdir”目錄設定為當前目錄,命令如下。>>>importos>>>o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024浙江金華市金東糧食收儲有限責任公司招聘3人筆試參考題庫附帶答案詳解
- Module1 How to learn English Unit1 Lets try to speak English as much as possible. 教學設計 2024-2025學年外研版八年級英語上冊
- 2024廣東茂名市高州市市屬國有企業(yè)招聘企業(yè)人員筆試和復審筆試參考題庫附帶答案詳解
- 2024河北唐山國控集團有限公司公開招聘工作人員32人筆試參考題庫附帶答案詳解
- 2024江西南昌民航空管實業(yè)有限責任公司面向社會招收勞務派遣制員工廚師崗位一人筆試參考題庫附帶答案詳解
- 2025年十溴聯(lián)苯醚合作協(xié)議書
- 第14課 絲綢之路的開通與經營西域2024-2025學年新教材七年級上冊歷史新教學設計(統(tǒng)編版2024)
- Unit 1 Me and my class Lesson 1教學設計-2024-2025學年冀教版八年級英語上冊
- Unit 1 A new start:Presenting ideas學習任務單 教學設計 2024-2025學年外研版(2024年)英語七年級 上冊
- 羽毛球對打 第三課時 教學設計-2024-2025學年高一上學期體育與健康人教版必修第一冊
- 爆破工程師培訓
- 2024年云南省公務員考試《行測》真題及答案解析
- 教科版初中物理八年級下冊知識梳理
- 《飛科電器公司盈利能力存在的問題及完善對策(7800字論文)》
- 零星維修工程項目施工方案1
- 楚辭離騷的原文全文完整注音版、拼音版標準翻譯譯文及注釋
- 湖北省荊州市2024年七年級上學期期中數(shù)學試題【附答案】
- 刑事訴訟法課件
- 肩袖損傷病例討論
- 《ISO 41001-2018 設施管理- 管理體系 要求及使用指南》專業(yè)讀與應用指導材料之2:“4 組織環(huán)境-4.2 理解相關方的需要和期望”
- 2024年中國凍蝦仁市場調查研究報告
評論
0/150
提交評論