檔案基本操作
一、開啟檔案
f = open(`11`,`r`)#open(`file path`,`mode`)
建立一個檔案物件
檔案有多種開啟模式:
1. `r`:新建一個檔案物件以只讀方式開啟檔案。讀檔案的指標將會放在檔案的開頭。
f = open(`11`,`r`)#open(`file path`,mode`) data = f.read() print(data)
f.close() #輸出123456789
2.‘w’:新建一個只用於寫檔案的檔案物件
f = open(`11`,`w`) f.write(`12345`)
f.close() #檔案中內容會變成12345
如果該檔案已存在則開啟檔案,並從開頭開始編輯,原有內容會被刪除。如果該檔案不存在,建立新檔案並寫入內容。
3. `a`: 新建一個只用於追加內容的檔案物件。
f = open(`11`,`a`) f.write(` 12345655`) f.close()
檔案的末尾會加上要輸入的內容。
如果該檔案已存在,檔案指標將會放在檔案的結尾,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
4. `r+`: 新建一個只用於讀寫的檔案物件。檔案指標將會放在檔案的開頭,但寫入內容會寫到檔案內容末尾。
f = open(`11`, `r+`) a = f.readline() f.write(`789`) print(a)
f.close() #輸出123 #檔案末尾加上了789
5.`w+`:新建一個只用於讀寫的檔案物件。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。
6. `a+`: 新建一個只用於讀寫的檔案物件。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。讀檔案時從檔案內容的末尾讀,因為檔案指標放在檔案的結尾。
二、內建方法
1. readline()
f = open(`11`,`r`) print(f.readline()) f.close() #檔案內容: #123 #1234 #12345 #123456 #輸出:123
按行輸出。每呼叫一次輸出一行。
2. readlines()
f = open(`11`,`r`) print(f.readlines()) f.close() #輸出[`123 `, `1234 `, `12345 `, `123456`]
輸出所有行,以列表形式返回。
3.flush()方法
可以用來重新整理緩衝區,將緩衝區中的資料立刻寫入檔案,同時清空緩衝區,不用被動地等待輸出緩衝區寫入。一般情況下,檔案關閉後會自動重新整理緩衝區,但有時你需要在關閉前重新整理它,這時就可以使用 flush() 方法。例如:進度條
import sys,time for i in range(30): sys.stdout.write(`*`) sys.stdout.flush() time.sleep(0.1)
4.truncate()方法
f = open(`11`, `a`) f.truncate(2) #檔案內容 #123 #1234 #12345 #123456 #輸出12
用於截斷檔案,如果指定了可選引數 size,則表示保留前size 個位元組,刪除 size 後面的所有字元。 如果沒有指定 size,則從當前位置起截斷。
5.seek()方法
seek(offset ,whence) 方法改變當前檔案的位置。
offset變數表示要移動的位元組數。whence變數表示要從哪個位置開始偏移.
如果whence被設為0,表示將檔案的開頭作為移動位元組的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該檔案的末尾將作為參考位置。
6.with 關鍵字
with open(`11`,`r`) as f: a = f.readline() print(a)
使用了with之後,可以不用寫close(),預設在with語句執行完之後關閉檔案。
7.tell() 方法
返回檔案的當前位置,即檔案指標當前位置。
with open(`11`,`r+`) as f: a = f.readline(1) print(a) print(f.tell())