天天看點

python面向對象程式設計——檔案操作

01. 檔案的基本操作

1.1 操作檔案的套路

在 計算機 中要操作檔案的套路非常固定,一共包含三個步驟:

  1. 打開檔案
  2. 讀、寫檔案
  • 讀将檔案内容讀入記憶體
  • 寫将記憶體内容寫入檔案
  1. 關閉檔案

2.2 操作檔案的函數/方法

  • 在​

    ​Python​

    ​ 中要操作檔案需要記住 1 個函數和 3 個方法
序号 函數/方法 說明
01 open 打開檔案,并且傳回檔案操作對象
02 read 将檔案内容讀取到記憶體
03 write 将指定内容寫入檔案
04 close 關閉檔案
  • ​open​

    ​ 函數負責打開檔案,并且傳回檔案對象
  • ​read​

    ​​/​

    ​write​

    ​​/​

    ​close​

    ​ 三個方法都需要通過檔案對象來調用

2.3 read 方法 —— 讀取檔案

  • ​open​

    ​ 函數的第一個參數是要打開的檔案名(檔案名區分大小寫)
  • 如果檔案存在,傳回檔案操作對象
  • 如果檔案不存在,會抛出異常
  • ​read​

    ​ 方法可以一次性讀入并傳回檔案的所有内容
  • ​close​

    ​ 方法負責關閉檔案
  • 如果忘記關閉檔案,會造成系統資源消耗,而且會影響到後續對檔案的通路
  • 注意:​

    ​read​

    ​ 方法執行後,會把檔案指針移動到檔案的末尾
# 1. 打開 - 檔案名需要注意大小寫
file = open("README")

# 2. 讀取,一次讀取
text = file.read()
print(text)

# 3. 關閉
file.close()      

檔案指針

  • 檔案指針标記從哪個位置開始讀取資料
  • 第一次打開檔案時,通常檔案指針會指向檔案的開始位置
  • 當執行了​

    ​read​

    ​ 方法後,檔案指針會移動到讀取内容的末尾
  • 預設情況下會移動到檔案末尾

​思考​

  • 如果執行了一次​

    ​read​

    ​ 方法,讀取了所有内容,那麼再次調用 ​

    ​read​

    ​ 方法,還能夠獲得到内容嗎?
  • 答: 不能,第一次讀取之後,檔案指針移動到了檔案末尾,再次調用不會讀取到任何的内容

2.4 打開檔案的方式

  • ​open​

    ​ 函數預設以隻讀方式打開檔案,并且傳回檔案對象

文法如下:

f = open("檔案名", "通路方式")      
通路方式 說明
r 以隻讀方式打開檔案。檔案的指針将會放在檔案的開頭,這是**​

​預設模式​

​**。如果檔案不存在,抛出異常
w 以隻寫方式打開檔案。如果檔案存在會被覆寫。如果檔案不存在,建立新檔案
a 以追加方式打開檔案。如果該檔案已存在,檔案指針将會放在檔案的結尾。如果檔案不存在,建立新檔案進行寫入
r+ (​

​不推薦​

​) 以讀寫方式打開檔案。檔案的指針将會放在檔案的開頭。如果檔案不存在,抛出異常
w+ (​

​不推薦​

​)以讀寫方式打開檔案。如果檔案存在會被覆寫。如果檔案不存在,建立新檔案
a+ (​

​不推薦​

​)以讀寫方式打開檔案。如果該檔案已存在,檔案指針将會放在檔案的結尾。如果檔案不存在,建立新檔案進行寫入

​為什麼不推薦​

  • 頻繁的移動檔案指針,會影響檔案的讀寫效率,開發中更多的時候會以隻讀、隻寫的方式來操作檔案
# 打開檔案
f = open("README", "w")

f.write("hello python!\n")
f.write("今天深圳35度")

# 關閉檔案
f.close()      

2.5 按行讀取檔案内容

  • ​read​

    ​ 方法預設會把檔案的所有内容一次性讀取到記憶體
  • 如果檔案太大,對記憶體的占用會非常嚴重

​readline​

​ 方法

  • ​readline​

    ​ 方法可以一次讀取一行内容
  • 方法執行後,會把檔案指針移動到下一行,準備再次讀取
# 打開檔案
file = open("README")

while True:
    # 讀取一行内容
    text = file.readline()

    # 判斷是否讀到内容
    if not text:
        break

    # 每讀取一行的末尾已經有了一個 `\n`
    print(text, end="")

# 關閉檔案
file.close()      

2.6 檔案讀寫案例 —— 複制檔案

小檔案複制

  • 打開一個已有檔案,讀取完整内容,并寫入到另外一個檔案
# 1. 打開檔案
file_1 = open("README")
file_2 = open("README_copy", "w")

# 2. 讀取并寫入檔案
text = file_1.read()
file_2.write(text)

# 3. 關閉檔案
file_1.close()
file_2.close()      

大檔案複制

  • 打開一個已有檔案,逐行讀取内容,并順序寫入到另外一個檔案
# 1. 打開檔案
file_1 = open("README")
file_2 = open("README_copy", "w")

# 2. 讀取并寫入檔案
while True:
    # 每次讀取一行
    text = file_1.readline()

    # 判斷是否讀取到内容
    if not text:
        break

    file_2.write(text)

# 3. 關閉檔案
file_1.close()
file_2.close()      

繼續閱讀