大學計算機基礎及應用(Python篇)課件:文件操作_第1頁
大學計算機基礎及應用(Python篇)課件:文件操作_第2頁
大學計算機基礎及應用(Python篇)課件:文件操作_第3頁
大學計算機基礎及應用(Python篇)課件:文件操作_第4頁
大學計算機基礎及應用(Python篇)課件:文件操作_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

文件操作目錄頁12.1文件基本操作12.2 讀寫CSV文件12.1文件基本操作文件標識文件標識的意義:找到計算機中唯一確定的文件。文件標識的組成:文件路徑、文件名主干、文件擴展名。操作系統以文件為單位對數據進行管理。文件類型根據數據的邏輯存儲結構,人們將計算機中的文件分為文本文件和二進制文件。文本文件:專門存儲文本字符數據。二進制文件:不能直接使用文字處理程序正常讀寫,必須先了解其結構和序列化規則,再設計正確的反序列化規則,才能正確獲取文件信息。二進制文件和文本文件這兩種類型的劃分基于數據邏輯存儲結構而非物理存儲結構,計算機中的數據在物理層面都以二進制形式存儲。標準文件Python的sys模塊中定義了3個標準文件,分別為:stdin(標準輸入文件)。標準輸入文件對應輸入設備,如鍵盤。stdout(標準輸出文件)。stderr(標準錯誤文件)。標準輸出文件和標準錯誤文件對應輸出設備,如顯示器。在解釋器中導入sys模塊后,便可對標準文件進行操作。標準文件importsysfile=sys.stdoutfile.write("hello")示例文件的打開、關閉與讀寫是文件的基礎操作,任何更復雜的文件操作都離不開這些操作。1.打開文件內置函數open()用于打開文件,該方法的聲明如下:open(file,mode='r',buffering=-1)file:文件的路徑。mode:設置文件的打開模式,取值有r、w、a。buffering:設置訪問文件的緩沖方式。取值為0或1。【參數】r:以只讀方式打開文件(mode參數的默認值)。w:以只寫方式打開文件。a:以追加方式打開文件。b:以二進制形式打開文件。+:以更新的方式打開文件(可讀可寫)1.打開文件打開模式名稱描述r/rb只讀模式以只讀的形式打開文本文件/二進制文件,若文件不存在或無法找到,文件打開失敗w/wb只寫模式以只寫的形式打開文本文件/二進制文件,若文件已存在,則重寫文件,否則創建新文件a/ab追加模式以只寫的形式打開文本文件/二進制文件,只允許在該文件末尾追加數據,若文件不存在,則創建新文件r+/rb+讀取(更新)模式以讀/寫的形式打開文本文件/二進制文件,若文件不存在,文件打開失敗

w+/wb+寫入(更新)模式以讀/寫的形式打開文本文件/二進制文件,若文件已存在,則重寫文件a+/ab+追加(更新)模式以讀/寫的形式打開文本/二進制文件,只允許在文件末尾添加數據,若文件不存在,則創建新文件1.打開文件內置函數open()用于打開文件,該方法的聲明如下:open(file,mode='r',buffering=-1)若open()函數調用成功,返回一個文件對象。【返回值】file1=open('E:\\a.txt') #以只讀方式打開E盤的文本文件a.txtfile2=open('b.txt','w') #以只寫方式打開當前目錄的文本文件b.txtfile3=open('c.txt','w+') #以讀/寫方式打開文本文件c.txtfile4=open('d.txt','wb+') #以讀/寫方式打開二進制文件d.txt示例1.打開文件若待打開的文件不存在,文件打開失敗,程序會拋出異常,并打印錯誤信息。------------------------------------------------------------------------FileNotFoundErrorTraceback(mostrecentcalllast)<ipython-input-5-23b0bb5a2ffc>in<module>---->1file1=open("b.txt")FileNotFoundError:[Errno2]Nosuchfileordirectory:'b.txt'示例2.關閉文件Python可通過close()方法關閉文件,也可以使用with語句實現文件的自動關閉。close()方法是文件對象的內置方法。(1)close()方法file.close()示例2.關閉文件with語句可預定義清理操作,以實現文件的自動關閉。(2)with語句withopen('a.txt')asf:pass示例思考:為什么要及時關閉文件?計算機中可打開的文件數量是有限打開的文件占用系統資源若程序因異常關閉,可能產生數據丟失12.2 讀寫CSV文件Python提供了一系列讀寫文件的方法,包括讀取文件的read()、readline()、readlines()方法和寫文件的write()、writelines()方法,下面結合這些方法分別介紹如何讀寫文件。1.讀取文件——read()方法read()方法可以從指定文件中讀取指定字節的數據,其語法格式如下:read(n=-1)withopen('file.txt',mode='r')asf:print(f.read(2)) #讀取兩個字節的數據

print(f.read()) #讀取剩余的全部數據示例1.讀取文件——readline()方法readline()方法可以從指定文件中讀取一行數據,其語法格式如下:readline()withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readline())print(f.readline())示例1.讀取文件——readline()方法readlines()方法可以一次讀取文件中的所有數據,若讀取成功,該方法會返回一個列表,文件中的每一行對應列表中的一個元素。語法格式如下:readlines(hint=-1)withopen('file.txt',mode='r',encoding='utf-8')asf:print(f.readlines())#使用readlines()方法讀取數據示例hint:單位為字節,用于控制要讀取的行數如果行中數據的總大小超出了hint字節,readlines()不會再讀取更多的行。1.讀取文件read()(參數缺省時)和readlines()方法都可一次讀取文件中的全部數據,但因為計算機的內存是有限的,若文件較大,read()和readlines()的一次讀取便會耗盡系統內存,所以這兩種操作都不夠安全。為了保證讀取安全,通常多次調用read()方法,每次讀取size字節的數據。2.寫文件——write()方法write()方法可以將指定字符串寫入文件,其語法格式如下:write(data)以上格式中的參數data表示要寫入文件的數據,若數據寫入成功,write()方法會返回本次寫入文件的數據的字節數。string="Hereweareall,byday;bynight." #字符串withopen('write_file.txt',mode='w',encoding='utf-8')asf: size=f.write(string) #寫入字符串

print(size) #打印字節數示例2.寫文件——writelines()方法writelines()方法用于將行列表寫入文件,其語法格式如下:writelines(lines)以上格式中的參數lines表示要寫入文件中的數據,該參數可以是一個字符串或者字符串列表。若寫入文件的數據在文件中需要換行,需要顯式指定換行符。string="Hereweareall,byday;\nbynightwe'rehurl'dBydreams,eachoneintoaseveralworld."withopen('write_file.txt',mode='w',encoding='utf-8')asf:f.writelines(string)示例文本文件支持多種編碼方式,不同編碼方式下字符與字節的對應關系不同,常見的編碼方式以及字符與字節的對應關系如表所示。編碼方式語言字符數字節數ASCII中文12英文11UTF-8中文13英文11Unicode中文12英文12GBK中文12英文11

7.2.2節使用read()方法讀取了文件file.txt,結合代碼與程序運行結果進行分析,可以發現read()方法第1次讀取了2個字符,第2次從第3個字符“e”開始讀取了剩余字符。在文件的一次打開與關閉之間進行的讀寫操作是連續的,程序總是從上次讀寫的位置繼續向下進行讀寫操作。每個文件對象都有一個稱為“文件讀寫位置”的屬性,該屬性會記錄當前讀寫的位置。文件讀寫位置默認為0,即在文件首部。Python提供了一些獲取與修改文件讀寫位置的方法,以實現文件的定位讀寫。tell():獲取文件當前的讀寫位置。seek():控制文件的讀寫位置。tell()方法用于獲取文件當前的讀寫位置,以操作文件file.txt為例,tell()的用法如下:1.tell()方法withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置

print(f.read(5)) #利用read()方法移動文件讀寫位置

print(f.tell()) #再次獲取文件讀寫位置示例Python提供了seek()方法,使用該方法可控制文件的讀寫位置,實現文件的隨機讀寫。seek()方法的語法格式如下:seek(offset,from)offset:表示偏移量,即讀寫位置需要移動的字節數。from:用于指定文件的讀寫位置,該參數的取值為0、1、2。2.seek()方法0:表示文件開頭。1:表示使用當前讀寫位置。2:表示文件末尾。seek()方法調用成功后會返回當前讀寫位置。2.seek()方法withopen('file.txt')asf:print(f.tell()) #獲取文件讀寫位置

print(f.read(5)) #利用read()方法移動文件讀寫位置

print(f.tell()) #再次獲取文件讀寫位置示例在Python3中,若打開的是文本文件,那么seek()方法只允許相對于文件開頭移動文件位置,若在參數from值為1、2的情況下對文本文件進行位移操作,將會產生錯誤。2.seek()方法withopen('file.txt')asf:f.seek(5,0) #相對文件開頭移動5字節

f.seek(3,1)示例若要相對當前讀寫位置或文件末尾進行位移操作,需以二進制形式打開文件。2.seek()方法withopen('file.txt','rb')asf:f.seek(5,0)f.seek(3,1)示例對于用戶而言,文件和目錄以不同的形式展現,但對計算機而言,目錄是文件屬性信息集合,它本質上也是一種文件。os模塊中定義了與文件操作相關的函數,利用這些函數可以實現刪除文件、文件重命名、創建/刪除目錄、獲取當前目錄、更改默認目錄與獲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論