1. 程式人生 > >Python小白學習之路(十九)—【檔案操作步驟】【檔案操作模式】

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會議論文、忙著寫開題報告、忙著投專利

總感覺自己效率不是很高

自己也一直想辦法  努力提高自己效率

好好加油吧

不要在忙碌中迷失了自我

不要忘記最初的夢想

我覺得,最可貴的事情  就是在不斷的成長過程中

保持那顆善良的心  堅持自己的夢想

一直想去大城市闖闖

雖然過來的人總和我說   一個人在外  太不容易  

我好想一直就是個倔強的人

我一直想證明  我是一個厲害的小夥郭

加油啦