今天我們學習的是python中的檔案機制。
Python檔案機制通常用於讀取、寫入和操作檔案。而透過Python的內建函式,我們可以與各種不同格式的檔案(純文字、CSV、JSON...)進行互動。
檔案可讓開發人員讀取現有的資料、寫入新的資訊,並且能對檔案內容進行各種操作,例如尋找特定內容、更新檔案以及處理大量資料。
Python 的檔案操作支援多種模式:讀取模式('r')、寫入模式('w')、附加模式('a')和二進位模式('b'),我們可以根據需求對檔案進行操作。
以下讓我們來了解檔案的運作及應用吧!
1.檢測檔案
檢測檔案可以在檔案操作之前,確認檔案是否存在,並檢查檔案本身為檔案還是目錄。我們通常會使用OS的標準庫模組來進行檔案的檢測。
範例:
首先,我們需要設定並取得目標檔案的路徑。我們在桌面新增一項資料夾,在裡面放入一個test文字檔為目標檔案,並取得其路徑。
取得路徑後,我們便可以開始撰寫程式碼。
import os
#因為\是跳脫字元,我們須在字串前面加上r,或是使用兩條\\,讓其可正常顯示
str = r"C:\Users\sharo.LAPTOP-R8RUGEN1\OneDrive\桌面\workspace" #此路徑為目錄,加上\test.txt後,此路徑為檔案
print(str)
if os.path.exists(str):
print("此路徑存在")
else:
print("此路徑不存在")
if os.path.isfile(str):
print("此路徑為檔案")
elif os.path.isdir(str):
print("此路徑為目錄")
else:
print('other')
2.讀取檔案
在執行讀取檔案前,我們需要新增一些內容在目標檔案內。
完成之後,我們便可以開始撰寫程式碼:
str = r"C:\Users\sharo.LAPTOP-R8RUGEN1\OneDrive\桌面\workspace\test.txt"
try:
with open(str) as file:
print(file.read())
exception FileNotFoundError:
print("此檔案不存在")
3.寫入檔案
我們可以在python中撰寫程式碼來新增檔案及其內容到目標路徑,以下我們開始撰寫程式碼:
str = r"C:\Users\sharo.LAPTOP-R8RUGEN1\OneDrive\桌面\workspace\TEST.txt"
text = "Hello! \n Welcome!"
with open(str, 'w') as file: #w為寫入文字模式
file.write(text)
with open(str, 'a') as file: #w為插入文字模式
file.write('\n Bye Bye')
4.複製文件
當我們使用python來複製文件時,我們需要使用到python的內建模組:shutil模組,以下將介紹三種方法('coptfile', 'copy', 'copy2'),讓我們開始撰寫程式碼:
import shutil
str = r"C:\Users\sharo.LAPTOP-R8RUGEN1\OneDrive\桌面\workspace"
#copyfile
source = f"{w}/test.txt"
destination = f"{w}/test2.txt"
shutil.copyfile(source, destination)
1.copyfile 只複製文件數據,不複製檔案裡的描述內容
2.copy 只複製描述內容,不複製其他數據(目錄也可)
3.copy2 描述內容及數據資訊、權限等皆可複製
5.刪除檔案
當我們要刪除檔案時,需要用到OS模組中的remove函數。我們將會學習4種刪除檔案的方法,以下為範例程式碼:
import os
import shutil
str = r"C:\Users\sharo.LAPTOP-R8RUGEN1\OneDrive\桌面\workspace"
#刪除檔案
os.remove(f"{str}/test.txt")
#刪除空資料夾
os.rmdir(f"{str}/資料夾名稱")
#刪除資料夾及其內容
shutil.rmtree(f"{str}/資料夾名稱")
#丟到資源回收桶
import send2trash
send2trash.send2trash(fr"{str}\test.txt")
以上為今日的學習。透過這個學習過程,我不僅學會了如何有效地讀取與寫入檔案內容,還學習到如何使用 Python 進行資料的管理與處理,這對於日後在資料分析、自動化任務、或開發應用程式上都非常有幫助。
這次的學習經驗讓我對 Python 的檔案操作有了全面性的了解,並且能夠運用這項技能解決實際問題。