如何在 Python 中提取檔案路徑的一部分(目錄)?


在使用檔案操作和目錄結構時,處理檔案路徑是 Python 程式設計中的常見任務。為了獨立分析或修改檔案路徑,有時可能需要剝離檔案路徑的特定部分,例如目錄名稱。Python 提供了幾種方法來快速有效地執行此操作。

這篇深入的文章將探討從 Python 檔案路徑中提取目錄的各種技術。我們將逐步講解該過程,並提供程式碼示例。您可以將檔案路徑分成多個部分,獲取父目錄或隔離特定子資料夾,掌握這些技術將增強您的檔案處理能力,並簡化您的程式設計工作流程。

讓我們開始這段使用 Python 進行檔案路徑操作的旅程,並揭開提取目錄名稱的秘密!

使用 os.path 模組進行基本目錄提取

Python 的 "os.path" 模組提供了一種簡單的方法來從給定的檔案路徑中提取父目錄(直接包含目錄)。

示例

  • 下面的程式碼匯入了 "os" 模組,該模組提供與作業系統相關的活動函式。

  • 我們可以使用 "extract_parent_directory()" 方法從指定的檔案路徑中提取父目錄。

  • 為了獲取父目錄(即指定檔案路徑的直接包含目錄),我們使用 "os.path.dirname(file_path)"。

  • 該函式提供一個表示已提取父目錄的字串。

import os

def extract_parent_directory(file_path):
   parent_directory = os.path.dirname(file_path)
   return parent_directory

利用 pathlib.Path 進行高階路徑操作

藉助 Python 的 "pathlib" 模組,處理檔案路徑現在更加現代化和麵向物件。它提供了更多策略來進行更復雜的路徑修改,例如定位路徑的特定部分。

示例

  • 此示例匯入了 "pathlib" 模組中的 "Path" 類,它代表檔案系統路徑。

  • "extract_subdirectory_with_pathlib()" 方法使我們能夠使用 "pathlib" 從指定的檔案路徑中提取子目錄。

  • 使用 "Path(file_path)"(其中 "file_path" 是輸入檔案路徑)生成一個 "Path" 物件。

  • 我們可以使用 "path_object.parent.name" 屬性找出檔案路徑的直接封閉目錄(子目錄)的名稱。

  • 該函式提供檢索到的子資料夾名稱的字串表示形式。

from pathlib import Path

def extract_subdirectory_with_pathlib(file_path):
   path_object = Path(file_path)
   subdirectory = path_object.parent.name
   return subdirectory

將檔案路徑拆分成元件

Python 的 "os.path" 模組還允許我們將檔案路徑拆分成各個元件,例如驅動器、根目錄、目錄和檔名。

示例

  • 我們可以使用 "split_file_path()" 方法將檔案路徑拆分成其元件部分。

  • 為了將驅動器(Windows)或空字串(類 Unix 系統)與路徑的其餘部分分開,我們使用 "os.path.splitdrive(file_path)"。

  • 接下來,我們使用 "os.path.split(root)" 將根目錄(剩餘路徑的初始部分)和目錄(剩餘路徑的其餘部分)分開。

  • 該函式返回驅動器(如果存在)、根目錄和目錄的字串。

import os
def split_file_path(file_path):
   drive, root = os.path.splitdrive(file_path)
   root, directory = os.path.split(root)
   return drive, root, directory

從檔案路徑中提取多個子目錄

在更復雜的情況下,您可能需要從檔案路徑中提取多個子目錄。可以使用 Python 中的 "os.path" 模組透過重複拆分路徑來處理此類情況。

示例

  • 我們可以使用 "extract_multiple_subdirectories()" 方法從檔案路徑中提取多個子目錄。

  • 使用迴圈重複提取直接子目錄和拆分檔案路徑指定次數 (num_subdirectories)。

  • 使用 "subdirectories.insert(0, subdirectory)" 將提取的子目錄放在 "subdirectories" 列表的開頭。

  • 該函式的輸出是提取的子目錄列表。

import os

def extract_multiple_subdirectories(file_path, num_subdirectories):
   subdirectories = []
   for _ in range(num_subdirectories):
      file_path, subdirectory = os.path.split(file_path)
      subdirectories.insert(0, subdirectory)
   return subdirectories

處理絕對路徑和相對路徑

在處理檔案檔案時,正確處理絕對路徑和相對路徑至關重要。Python 中的 "os.path" 和 "pathlib" 模組都提供了一致的方法來處理這兩種型別的路徑。

示例

  • "handle_absolute_relative_paths()" 函式演示瞭如何使用 "os.path" 和 "pathlib" 模組來處理絕對路徑和相對路徑。

  • 我們使用 "os.path" 模組從輸入檔案路徑中獲取父目錄,使用 "os.path.dirname(file_path)"。

  • 接下來,使用 "pathlib" 模組,我們使用 "Path(file_path)" 建立一個 "Path" 物件,並使用 "path_object.parent" 來檢索父目錄。

  • 該函式使用這兩種方法返回提取的父目錄。

import os
from pathlib import Path

def handle_absolute_relative_paths(file_path):
   # Using os.path module
   parent_directory_os = os.path.dirname(file_path)

   # Using pathlib.Path
   path_object = Path(file_path)
   parent_directory_pathlib = path_object.parent

   return parent_directory_os, parent_directory_pathlib

結論

這篇深入的文章介紹了從 Python 檔案路徑中提取目錄的各種技術。無論您選擇使用久經考驗的 "os.path" 模組還是更現代的 "pathlib" 包,Python 都提供了多種方法來有效地處理檔案路徑。通過了解這些技術,您將能夠輕鬆地處理和修改檔案路徑,從而簡化檔案處理任務,並改善 Python 程式的整體結構。

更新於:2023年8月22日

3000+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.