從零開始的Python學習Episode 7——檔案基本操作

微笑小狗發表於2018-09-23

檔案基本操作

 

一、開啟檔案

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())

  

 

相關文章