Python文件和數據格式化(教程)


文件是一個存儲在副主存儲器的數據序列,可包含任何數據內容。

概念上,文件是數據的集合和抽象,類似的,函數是程序的集合和抽象。

用文件形式組織和表達數據更有效也更加靈活。

文件包括兩種形式,文本文件和二進制文件。

文本文件:一般由單一特定的編碼的字符組成

二進制文件:一般由0和比特1組成,沒有統一的字符編碼。

無論是通過文本還是二進制創建的文件,都可以用兩種方式來打開。

 我們來舉個例子對比文本文件和二進制文件,

首先我們在桌面創建一個文本文件,取名example,並寫入“我愛我的祖國”

如下所示:

 

 注意:右下角的編碼方式為“UTF-8”

然后執行代碼:

fp=open("example.txt","rt",encoding='UTF-8')
print(fp.readline())
fp.close()

fps=open("example.txt","rb")
print(fps.readline())
fps.close()

 

在這段代碼中,分別使用文本文件形式和二進制形式打開文檔,然后讀取、關閉。

注:rt為文本文件形式、rb為二進制文件形式。

運行結果如下所示:

 

 

接下來,我們正式學習文件相關操作。

1.文件的打開和關閉

說到文件的打開關閉,不由得讓我想起以前的笑話,把大象裝進冰箱需要幾步?

文件操作和這個笑話一樣,首先打開文件、然后進行操作、最后關閉文件。

文件的打開:

文件默認處於存儲狀態,只有將其打開當前程序才有權操作這個文件。

打開不存在的文件,程序將會創造一個新文件來進行操作。

打開這個文件之后,文件處於被占用狀態,另一個進程不得對文件進行操作。

文件打開需要使用open()函數,格式如下:

<變量名>=open(<文件名>,<打開模式>)

encoding為編碼方式

文件打開模式:

“r”    :只讀模式,文件不存在返回異常

“w”   :覆蓋模式,文件不存在則創建、文件存在則完全覆蓋

“x“    :創建寫模式,文件不存在則創建、存在則返回異常

”a”    :追加寫模式,文件不存在則創建、文件存在則在穩健最后追加內容

“b”    :二進制模式

“f”     :文本文件模式(默認值)

“+”    :與 r\w\x\a一同使用,在原基礎上加入了同時讀寫功能

打開模式可以為字符串形式,其中r,w,x,a可以和b,t,+組合使用

如剛剛例子的打開方式:rt,rb

encoding為編碼方式

 

文件的關閉:

文件使用之后,要采用close()函數關閉文件,釋放文件的使用授權

使用方法如下:

<變量名>.close()

 

2.文件的讀取

文件打開之后,根據打開方式的不同可以對文件進行對應讀寫操作。(記得注意編碼方式)

文件的讀取方法如下:

<file>.read(size=-1)

從文件讀入整個文件內容,給出參數則讀取前size長度的字符串

<file>.readline(size=-1)

從文件中讀入一行內容,如果給出參數則讀取每行前size長度的字符串

<file>.readlines(hint=-1)

從文件中讀入整個文件的內容,以每一行為一個列表,如果給參入,只讀取前hint行

 

舉個例子,還是剛剛的example文件,我們多輸入兩行同樣的文件,逐行讀出。

先打開文件,然后for循環,通過readlines()逐行讀取、最后關閉。

代碼如下:

fp=open("example.txt","rt",encoding='UTF-8')
for line in fp.readlines():
    print(line)
fp.close()

 

運行結果如下:

 

 

3.文件的寫入

寫入的常見函數有三個

<file>.write(s)

向文件寫入一個字符串

<file>.writelines(lines)

講一個元素全為字符串的列表寫入文件

<file>.seek(offset)

改變當前文件操作指針的位置,offset的值“0”為文件開頭、“1”當前位置,“2”文件結尾

 

舉個例子,向文件寫入一個列表類型[“中國”、“美國”、“法國”]

代碼如下:

fp=open("example.txt","w+",encoding='UTF-8')
lst=["中國","美國","法國"]
fp.writelines(lst)
fp.close()

 

結果如下:

 

 

至此便是python文件方面的常見操作

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM