文件是一個存儲在副主存儲器的數據序列,可包含任何數據內容。python
概念上,文件是數據的集合和抽象,相似的,函數是程序的集合和抽象。函數
用文件形式組織和表達數據更有效也更加靈活。學習
文件包括兩種形式,文本文件和二進制文件。編碼
文本文件:通常由單一特定的編碼的字符組成spa
二進制文件:通常由0和比特1組成,沒有統一的字符編碼。指針
不管是經過文本仍是二進制建立的文件,均可以用兩種方式來打開。code
咱們來舉個例子對比文本文件和二進制文件,blog
首先咱們在桌面建立一個文本文件,取名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文件方面的常見操做
、