Python - 讀取檔案:初學者指南

哈囉,未來的 Python 大師!? 今天,我們將進入 Python 檔案處理的精彩世界。身為你友善的鄰居電腦老師,我將引導你學習讀取檔案的各個細節。如果你從未寫過一行程式碼,也別擔心 —— 我們會從頭開始,逐步建立基礎。所以,拿起你喜歡的飲料,放鬆一下,我們一起深入探討!

Python - Read Files

開啟檔案以供讀取

在我們可以讀取檔案之前,需要先開啟它。這就像在進入房屋之前敲門一樣。在 Python 中,我們使用 open() 函數來做到這一點。讓我們從一個簡單的例子開始:

file = open("hello.txt", "r")

以下是發生的事情:

  • open() 是我們用來開啟檔案的函數
  • "hello.txt" 是我們要開啟的檔案的名稱
  • "r" 表示我們以讀取模式開啟檔案

記得在完成操作後 always 關閉檔案:

file.close()

使用 read() 方法讀取檔案

現在我們已經開啟了檔案,讓我們來讀取其內容。read() 方法就像真空吸塵器 —— 一次就吸取所有內容。以下是我們如何使用它:

file = open("hello.txt", "r")
content = file.read()
print(content)
file.close()

這段程式碼將打印出檔案中的所有內容。這很簡單,但是對於大檔案要小心 —— 它們可能會吞噬你電腦的所有記憶體!

使用 readline() 方法讀取檔案

有時候,我們希望逐行讀取檔案,就像慢慢品嚐美味佳肴的每一口。這就是 readline() 的用處:

file = open("hello.txt", "r")
line = file.readline()
while line:
print(line, end='')
line = file.readline()
file.close()

這段程式碼讀取並打印檔案的每一行。print() 函數中的 end='' 防止添加額外的換行符,因為 readline() 會保留換行符。

使用 readlines() 方法讀取檔案

如果我們希望將所有行作為清單呢?這就是 readlines() 的用處:

file = open("hello.txt", "r")
lines = file.readlines()
for line in lines:
print(line, end='')
file.close()

這個方法返回一個清單,其中每個元素都是檔案中的一行。這就像得到一盒巧克力,每塊巧克力都是一行情文字!

使用 "with" 語句

現在,讓我們來談談 Python 提供的一個巧妙技巧 —— with 語句。這就像有一個負責任的朋友,他總是記得在離開後關門(檔案):

with open("hello.txt", "r") as file:
content = file.read()
print(content)

with 語句在我們完成操作後會自動關閉檔案。再也不用記得調用 close() 了!

以二進位模式讀取檔案

有時候,我們需要讀取的檔案不僅僅是文本,比如圖像或執行檔。對於這些,我們使用二進位模式:

with open("image.jpg", "rb") as file:
binary_data = file.read()
print(len(binary_data), "bytes read")

"rb" 模式以二進位讀取模式打開檔案。這就像戴上特殊眼鏡來看一和零!

從檔案中讀取整數數據

假設我們有一個每行一個數字的檔案。以下是我們如何讀取並將它們用作整數:

with open("numbers.txt", "r") as file:
numbers = [int(line.strip()) for line in file]
print("Numbers sum:", sum(numbers))

這段程式碼讀取每行,將其轉換為整數,並將其添加到清單中。然後我們可以對我們的數字進行數學運算!

從檔案中讀取浮點數數據

與整數類似,我們可以讀取浮點數:

with open("measurements.txt", "r") as file:
measurements = [float(line.strip()) for line in file]
print("Average measurement:", sum(measurements) / len(measurements))

這次,我們使用 float() 而不是 int() 來將我們的字串轉換為小數。

使用 "r+" 模式讀取和寫入檔案

有時我們希望讀取和寫入同一個檔案。"r+" 模式使我們能夠做到這一點:

with open("journal.txt", "r+") as file:
content = file.read()
file.write("\nNew entry: Today I learned about file handling in Python!")
file.seek(0)
updated_content = file.read()
print(updated_content)

這段程式碼讀取檔案,添加新行,然後再次讀取以顯示更改。

在 Python 中同時讀取和寫入檔案

這裡有一個技巧:我們可以使用兩個檔案物件同時進行讀取和寫入:

with open("original.txt", "r") as read_file, open("copy.txt", "w") as write_file:
for line in read_file:
write_file.write(line.upper())

這段程式碼從一個檔案中讀取,並將大寫版本寫入另一個檔案。這就像擁有一台會大喊的複印機!

從特定偏移量讀取檔案

有時我們希望從檔案中的特定位置開始讀取。我們可以使用 seek() 方法來做到這一點:

with open("long_text.txt", "r") as file:
file.seek(50)  # 移動到第 50 個位元組
partial_content = file.read(100)  # 從那個點讀取 100 個位元組
print(partial_content)

這就像在書中放上一個書籤,然後從那裡開始閱讀。

現在,讓我們把我們學過的所有方法總結在一個方便的表格中:

方法 描述
open() 開啟檔案
read() 讀取整個檔案內容
readline() 讀取單行
readlines() 讀取所有行到清單中
with 語句 自動關閉檔案
"rb" 模式 以二進位讀取模式打開檔案
int() / float() 將字串轉換為數字
"r+" 模式 打開檔案以供讀取和寫入
seek() 移動到檔案中的特定位置

就是這樣,各位!你剛剛學會了在 Python 中讀取檔案的基本知識。記住,練習成就完美,所以試著在你自己的檔案上嘗試這些操作。誰知道呢,你可能會成為下一個 Python 檔案處理大師!開心編程!?✨

Credits: Image by storyset