1. 前言
Python 在檔案操作方面非常靈活,可以用簡單的程式碼自動化許多工作。本文將介紹幾種使用 Python 來「獲取檔案名稱」的方法,並重點解釋標準函式庫中的 os
模組與 pathlib
模組。閱讀本文後,你將能夠高效管理目錄中的檔案,並撰寫腳本來獲取與篩選檔案名稱。
2. Python 獲取檔案名稱的基本方法
首先,從 Python 獲取檔案名稱的基本方法開始。可以使用 os.path.basename()
函式,從指定的路徑中提取檔案名稱。
2.1 os.path.basename()
的用法
os.path.basename()
是一個函式,可從完整路徑中提取檔案名稱。以下範例示範如何從檔案路徑中獲取檔案名稱:
import os
file_path = "/user/home/document/file.txt"
file_name = os.path.basename(file_path)
print(file_name) # 結果: "file.txt"
2.2 使用 os.path.dirname()
獲取目錄名稱
同樣地,可以使用 os.path.dirname()
來從檔案路徑中獲取目錄名稱。這樣可以將檔案名稱與目錄名稱分開處理。
dir_name = os.path.dirname(file_path)
print(dir_name) # 結果: "/user/home/document"

3. 獲取目錄內的所有檔案名稱
如果要以清單(list)的形式獲取某個目錄內的所有檔案和資料夾,可以使用 os.listdir()
。此外,如果需要遞迴地獲取子目錄內的檔案,則可以使用 os.walk()
。
3.1 使用 os.listdir()
獲取檔案名稱
os.listdir()
可用來獲取指定目錄內的所有檔案與資料夾,非常適合基本的目錄操作。
import os
dir_path = "/user/home/document"
files = os.listdir(dir_path)
print(files) # 結果: ["file1.txt", "file2.txt", "subfolder"]
3.2 使用 os.walk()
遞迴獲取檔案名稱
如果需要包含子目錄內的所有檔案,可以使用 os.walk()
。以下範例將列出指定目錄及其所有子目錄中的檔案。
import os
dir_path = "/user/home/document"
for root, dirs, files in os.walk(dir_path):
for file in files:
print(os.path.join(root, file))
3.3 加入錯誤處理
如果目錄不存在或沒有存取權限,則可能會發生錯誤。因此,建議使用 try-except
來進行例外處理。
dir_path = "/invalid/path"
try:
files = os.listdir(dir_path)
print(files)
except FileNotFoundError:
print(f"{dir_path} 找不到該目錄。")

4. 獲取與修改副檔名
在獲取檔案名稱時,有時也需要處理副檔名(擴展名)。可以使用 os.path.splitext()
來分離或更改副檔名。
4.1 使用 os.path.splitext()
獲取副檔名
os.path.splitext()
是一個函式,可以將檔案名稱與副檔名分開。
import os
file_path = "/user/home/document/file.txt"
file_name, file_ext = os.path.splitext(file_path)
print(file_name) # 結果: "/user/home/document/file"
print(file_ext) # 結果: ".txt"
4.2 更改副檔名
如果想要變更副檔名,可以使用 os.path.splitext()
來獲取檔案名稱,然後附加新的副檔名。
new_file_path = file_name + ".jpg"
print(new_file_path) # 結果: "/user/home/document/file.jpg"
5. 使用 pathlib
模組獲取檔案名稱的進階應用
從 Python 3.4 開始,pathlib
模組提供了一種更直覺的方式來操作檔案路徑。pathlib
採用了物件導向的方法來處理檔案路徑,使程式碼更加簡潔易讀。
5.1 使用 Path.iterdir()
獲取檔案名稱
使用 pathlib.Path()
的 iterdir()
方法,可以獲取指定目錄內的所有檔案與資料夾名稱。
from pathlib import Path
dir_path = Path("/user/home/document")
for item in dir_path.iterdir():
print(item.name)
5.2 使用 rglob()
遞迴獲取檔案名稱
如果需要包含子目錄內的所有檔案,可以使用 rglob()
方法,這是 os.walk()
的替代方案。
for file in dir_path.rglob("*"):
print(file)
6. 檔案名稱的篩選
如果需要根據特定條件篩選檔案名稱,可以使用 glob
模組或 pathlib
的 glob()
方法來完成。
6.1 依副檔名篩選檔案
如果只想獲取特定副檔名的檔案,可以使用萬用字元 *
來篩選。
from pathlib import Path
dir_path = Path("/user/home/document")
for file in dir_path.glob("*.txt"):
print(file)
這段程式碼會從指定目錄中,僅獲取 .txt
格式的檔案。
7. 總結
Python 提供了多種方法來獲取檔案名稱,根據不同的需求可以選擇適合的技術。例如,使用 os
模組進行基本操作,或者透過 pathlib
模組來簡化程式碼並提高可讀性。掌握這些技巧後,你可以更有效地管理目錄內的檔案,並根據需要進行篩選與處理。
在未來的文章中,我們將介紹如何進一步操作檔案,例如重新命名、移動、刪除檔案等進階技巧。