文件是一個存儲在副主存儲器的數據序列,可包含任何數據內容。
概念上,文件是數據的集合和抽象,類似的,函數是程序的集合和抽象。
用文件形式組織和表達數據更有效也更加靈活。
文件包括兩種形式,文本文件和二進制文件。
文本文件:一般由單一特定的編碼的字符組成
二進制文件:一般由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文件方面的常見操作
、