Python小白學習之路(十九)—【檔案操作步驟】【檔案操作模式】
一、檔案操作步驟
step1:開啟檔案,得到檔案控制代碼並賦值給一個變數
step2:通過控制代碼對檔案進行操作
step3:關閉檔案
舉例: a = open('hello world', 'r', encoding = 'utf-8') #開啟 ‘hello world’ 檔案,得到檔案控制代碼並賦值給一個變數 a data = a.read() #通過控制代碼對檔案進行讀操作 a.close() #關閉檔案
注意事項一:
關於 a.close() 關閉檔案
開啟一個檔案包含兩部分資源:作業系統級開啟的檔案+應用程式的變數。
在操作完畢一個檔案時,必須把與該檔案的這兩部分資源一個不落地回收,回收方法為:
1、f.close() #回收作業系統級開啟的檔案
2、del f #回收應用程式級的變數
其中del f一定要發生在f.close()之後,否則就會導致作業系統開啟的檔案還沒有關閉,白白佔用資源。
而python自動的垃圾回收機制決定了我們無需考慮del f。
這就要求我們,在操作完畢檔案後,一定要記住f.close()
簡單的來說,每 open() 一個檔案,就要求我們必須 close()
用關鍵字 with ,可以使用 close()
with open('hello world', 'r', encoding = 'utf-8') as a: data = a.read()print(data) 等同於 a = open('hello world', 'r', encoding = 'utf-8') data = a.read() print(data) a.close()
注意事項二:
關於 open() 檔案時編碼方式的問題
如果我們在 open() 檔案的時候不說明編碼方式的時候,系統預設的是按照操作
系統的編碼方式來(windows作業系統編碼方式是gbk,linux作業系統編碼方式是utf-8)
所以為了避免不亂碼、不報錯 檔案以什麼編碼方式儲存的,就要以什麼編碼方式開啟
二、關於檔案操作模式
r,只讀模式【預設模式,檔案必須存在,不存在則丟擲異常】
w,只寫模式【不可讀;不存在則建立;存在則清空內容】
a,追加寫模式【不可讀;不存在則建立;存在則只追加內容】
1.‘r’ 只讀模式
open() 檔案時,如果不指定操作方式,預設為只讀模式
讀操作的相關函式:
.read()
功能:對檔案進行讀操作,讀取全部檔案全部內容
.readable()
功能:判讀檔案是否可讀
舉例: a = open('helloworld', 'r', encoding = 'utf-8') date = a.read() print(date) print(a.readable()) #判斷檔案是否可讀,是的話返回True a.close() a = open('helloworld', 'w', encoding = 'utf-8') print(a.readable()) #判斷檔案是否可讀,否的話返回True a.close()
.readline()
功能:讀取檔案的一行內容
舉例: a = open('helloworld', 'r', encoding = 'utf-8') print(a.readline()) print(a.readline()) print(a.readline()) a.close() #執行結果: aaaaa bbbbb ccccc #獲取的每一行中間會有一個空白行間隔,那是因為每一行預設有一個換行符 #通過以下方式可以去掉間隔行 a = open('helloworld', 'r', encoding = 'utf-8') print(a.readline(),end = '') print(a.readline(),end = '') print(a.readline(),end = '') a.close() #執行結果 aaaaa bbbbb ccccc
.readlines()
功能:讀取檔案每一行內容,並將每一行內容存放在一個列表裡
舉例: a = open('helloworld', 'r', encoding = 'utf-8') print(a.readlines()) a.close() #執行結果 ['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
2.‘w’ 只寫模式
在寫模式下,執行檔案
如果檔案存在,將檔案內容清空再執行其他操作
如果檔案不存在,新建該檔案
寫操作的相關函式
.write()
功能:針對文字模式的寫,需要自己寫換行符
舉例: a = open('helloworld', 'w', encoding = 'utf-8') a.write('aaaa\n') a.write('bbbb\n') a.close() #將檔案內容清空,在執行寫操作
.writelines()
功能:以列表形式寫檔案
舉例: a = open('helloworld', 'w', encoding = 'utf-8') a.writelines(['aaaa\n', '1111\n']) a.close()
.writeable()
功能:判斷檔案是否可寫
舉例: a = open('helloworld', 'w', encoding = 'utf-8') print(a.writable()) a.close #執行結果 True
注意:
在給檔案寫內容是,寫的引數必須是字串型別,如果寫入其他型別會報錯
3.‘a’模式 追加寫模式
舉例: a = open('helloworld', 'a', encoding = 'utf-8') a.write('追加到最後一行') a.close()
任務:
開啟一個檔案,保留其第二行內容
src_f = open('helloworld', 'r', encoding = 'utf-8') data = src_f.readlines() src_f.close() print(data) dst_f = open('helloworld', 'w', encoding = 'utf-8') dst_f.write(data[1]) dst_f.close()
寫在後面:
最近都好忙,在忙著發學院會議論文、忙著發ccc會議論文、忙著寫開題報告、忙著投專利
總感覺自己效率不是很高
自己也一直想辦法 努力提高自己效率
好好加油吧
不要在忙碌中迷失了自我
不要忘記最初的夢想
我覺得,最可貴的事情 就是在不斷的成長過程中
保持那顆善良的心 堅持自己的夢想
一直想去大城市闖闖
雖然過來的人總和我說 一個人在外 太不容易
我好想一直就是個倔強的人
我一直想證明 我是一個厲害的小夥郭
加油啦