如何在 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日

3K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.