文件處理方法-Python

1. 文件說明

  • 文件是存儲在存儲器上的數據序列,在計算機中,所有文件都是以二進制的方式進行存儲的,而文件的展示形式一般分爲兩種:文本形式二進制形式

1.1 文本文件

  • 1.由單一特定編碼組成的文件,如utf-8編碼。

1.2 二進制文件

  • 1.直接由比特0和1組成的文件,沒有統一字符編碼。

在二進制文件中,0和1一般根據預定義的格式進行了結構組織,這種結構也就是文件的格式,結構的不同也就代表了文件格式的不同。例如.png,.avi等文件。

無論是文本文件還是二進制文件,在計算機中都是以二進制方式進行存儲的,而有統一編碼的我們稱其爲文本文件,沒有統一編碼的我們稱其爲二進制文件。不過對於任何類型的文件,我們都可以用二進制的方法進行打開。

2. 文件處理的一般步驟

當我們拿到一個文件時,處理步驟一般分爲三步:

  • 1.打開
  • 2.操作
  • 3.關閉

其中第一步打開文件是必不可少的,不打開文件是無法對其進行相關操作的(當然,如果你只是想要進行像刪除它之類的操作當我沒說),第二步操作是我們處理文件的核心,最後關閉它是爲了防止它繼續佔用我們的內存。

  • 打開文件和關閉文件一般來說都只需要一行代碼:
	# 以文本形式打開文件
>>>	tfile = open("file.txt","rt")
	# 以二進制形式打開文件
>>> bfile = open("file.txt","rb")
	# 關閉文件
>>> tfile.close()
>>> bfile.close()

可以看到,在文件的兩種狀態(存儲狀態打開狀態)之間,通過兩個函數open(,)close()來進行轉換,對open函數來講,示例中的兩個參數第一個代表文件的路徑和名稱,當省去路徑時必須保證文件和腳本在同一目錄下,第二個參數決定了你對文件打開的方式,如rt代表以只讀的文本形式打開,rb代表以只讀的二進制形式打開,這在後文中將會有詳細介紹。

2.1 文件的打開

如上文所講,文件的打開只需要用到open(,)函數,下面給出這個函數的用法。

  • 格式如下:

<句柄名稱> = open( 文件路徑及名稱 , 打開模式 )

句柄名稱即是後續對文件處理的對象,而文件路徑及名稱上文以及提過,而打開模式跟我們後續處理文件的方法息息相關,簡單來說我們想怎麼處理文件最好選擇相應的打開方法。Python提供了七種相關的打開模式,分別如下:

打開模式 作用
‘r’ 只讀模式,程序的默認值,如果文件不存在,返回FileNotFoundError類型錯誤。
‘w’ 覆蓋寫模式,文件若不存在則自動創建一個文件,如果文件存在則將其覆蓋。
‘x’ 創建寫模式,文件若不存在則創建文件,如果文件存在將返回FileExistsError類型錯誤。
‘a’ 追加寫模式,文件若不存在則創建文件,如果文件存在則將內容寫入到原文件的後邊。
‘b’ 以二進制類型打開文件。
‘t’ 以文本類型打開文件,此爲默認值。
‘+’ 與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能。

2.2 文件的關閉

文件的關閉非常簡單,格式如下:

<句柄名稱> . close()

2.3 文件內容的讀取

在對文件內容進行讀取時首先要保證文件以及被打開,而對於讀取方法,
Python提供了三個針對文件讀取的函數:

讀取方法 作用
<句柄>.read(size=-1) 讀入全部內容,如果給出參數,則讀入前size長度
<句柄>.readline(size=-1) 讀入一行內容,如果給出參數,則讀入該行的前size長度
<句柄>.readlines(hint=-1) 讀入文件的所有行,以每行爲元素形成列表,如果給出參數,則讀入前hint

2.4 數據的文件寫入

對文件內容的讀取來講,我們是將文件中的內容讀取出來然後進行我們的操作,不影響原文件,而對文件內容的寫入來講,是我們之間在文件上進行操作,不過要注意對文件以寫方式打開
Python也提供了三個針對文件寫入的函數:

寫入方法 作用
<句柄>.write(s) 向文件寫入一個字符串或者字節流
<句柄>.writelines(lines) 將一個元素全爲字符串的列表寫入文件
<句柄>.seek(offset) 改變當前文件操作指針的位置,offset參數:0、1、2分別代表文件開頭、當前位置、文件結尾。
  • 對於seek函數,它的作用是改變當前文件操作指針的位置,它的用處是什麼呢?舉個小例子:
	#首先以文本狀態和覆蓋寫模式打開一個文件
>>>	newfile	=	open('a_flie.txt','wb+')	
	#建立一個列表
>>>	a_list	=	['Keep calm',' and ','carry on',' !']
>>>	newfile.writelines(a_list)
>>>	for line in newfile:
		print(line)
>>>	newfile.close()
這段代碼在運行之後會生成一個'a_file.txt'文件,裏邊寫着'Keep calm and carry on !',
而在解釋器中卻並沒有打印這個字符串,這是因爲在文件寫入完成後,指針位置在文件的最後方,
而'for in'的遍歷方法是從指針位置向文件最後方遍歷,因此遍歷的結果是空,這個時候如果想要
使用遍歷的方法打印寫入的字符串,就需要用到'seek'函數,如下:
	#首先以文本狀態和覆蓋寫模式打開一個文件
>>>	newfile	=	open('a_flie.txt','wb+')	
	#建立一個列表
>>>	a_list	=	['Keep calm',' and ','carry on',' !']
>>>	newfile.writelines(a_list)
	#將文件指針轉移到文件頭部再進行遍歷
>>> newfile.seek(0)
>>>	for line in newfile:
		print(line)
>>>	newfile.close()
	#輸出結果
>>>	Keep calm and carry on !

3. 總結

  • 本文簡單的對文件出處理做了一些相關介紹,知識點很少,只要多練習一下就能熟練掌握,至於更高級的數據文件處理方法沒有涉及,不過不要急,要Keep calm and carry on !
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章