Python提供的檔案操作相對於Java來說,確實簡單方便許多。不僅操作簡單,程式碼可讀性也相對較高。然而,我們需要注意的不僅僅是檔案操作的簡單性,還有檔案操作的各種模式。在Java中,我們並不經常使用像Python中那樣的操作模式。
另外,我們還需要注意檔案指標的移動。無論是Java還是Python,檔案都可以看作是IO流,流到哪裡就算是哪裡。除非重新對檔案進行操作,否則想要回到檔案開頭,只能透過移動指標來實現。因此,在進行檔案操作時,我們需要謹慎考慮檔案指標的位置。
基本語法和模式
首先,我們需要使用open()函式來開啟檔案,並指定檔名和開啟模式。常用的開啟模式有多種選項,對於我們有經驗的來說,r、w、a基本都能猜到他們所代表的英文意思。
- r:只讀模式,從檔案中讀取資料(預設模式)。
- w:寫入模式,首先清空檔案內容,然後寫入資料。
- a:追加模式,將資料寫入檔案末尾。
- b:二進位制模式,用於處理二進位制資料,也就是圖片和影片檔案了。你可以將"b"理解為"binary"的縮寫
- t:文字模式(預設模式),用於處理文字檔案。你可以將"t"理解為"text"的縮寫
# 開啟檔案 也可以是file = open("filename.txt", "r")
file = open("example.txt", "rt")
# 一次性讀取檔案內容
content = file.read()
print(content)
# 關閉檔案
file.close()
除了示例中使用的rt模式,還有其他常用的模式,就是r、w和b、t的字母組合了:
- wt:以文字模式寫入檔案。如果檔案不存在,則建立一個新檔案;如果檔案已存在,則清空檔案內容。
- rb:以二進位制模式讀取檔案。
- wb:以二進位制模式寫入檔案。
我們上面的寫法是最基礎的,為了保證檔案操作的正確性和資源的釋放,我們需要手動關閉檔案。在Java中,可以使用try-with-resource語法來自動關閉流,而在Python中,我們也可以使用with語句來實現類似的功能,自動關閉檔案,如下所示:
with open("filename.txt", "r") as file:
content = file.read()
print(content)
當你在寫入檔案後,想要回到檔案開頭以便讀取檔案內容時,可以使用seek(0)將指標移動到檔案的開頭位置。以下是一個示例:
with open("file.txt", "a+") as file:
file.write("This is a new line.")
file.seek(0)
content = file.read()
print(content)
使用seek(0)
將指標移動到檔案的開頭位置。最後,我們使用read()
函式讀取整個檔案的內容,並將其列印出來。指令後面的+
號可以表示以讀寫方式開啟檔案。
簡單案例
使用with open()語句可以更簡潔地管理檔案的開啟和關閉,下面是使用with open()語句進行檔案交換、刪除原始檔和重新命名臨時檔案的示例程式碼:
import os
# 原始檔路徑
source_file = "path/to/source_file.txt"
# 臨時檔案路徑
temp_file = "path/to/temp_file.txt"
# 檔案交換
with open(source_file, "rt") as file, open(temp_file, "wt") as temp:
content = file.read()
temp.write(content)
# 刪除原始檔
os.remove(source_file)
# 重新命名臨時檔案為原始檔
os.rename(temp_file, source_file)
這次我們第一次使用了import語句,這個語句的作用是匯入包。透過匯入包,我們可以直接使用寫好的邏輯,而不需要自己去編寫。Python之所以能夠如此簡潔,離不開各種強大的包的支援。實際上,檔案交換部分的程式碼也可以利用包來實現,因為已經有其他人寫好了相關的功能,就像我們需要實現列表功能時可以直接使用ArrayList一樣。市面上已經有很多優秀的輪子可供使用,只需要直接拿來用,千萬不要重複造輪子~~
總結
Python提供的檔案操作相對於Java來說,更簡單方便。不僅操作簡單,程式碼可讀性也更高。不過,我們還需要注意檔案操作的各種模式和檔案指標的移動。雖然檔案操作只有幾種方式,但我不會給出示例,避免浪費大家的時間和精力。