插件窝 干货文章 Python如何高效提取文件路径字符串中的所有文件夹名称?

Python如何高效提取文件路径字符串中的所有文件夹名称?

path folders 路径 pathlib 822    来源:    2025-03-14

在Python中,你可以使用os.path模块或pathlib模块来高效地提取文件路径字符串中的所有文件夹名称。以下是两种方法的示例:

方法1:使用os.path模块

import os

def extract_folder_names(path):
    # 使用os.path.split来分割路径
    folders = []
    while True:
        path, folder = os.path.split(path)
        if folder:
            folders.append(folder)
        else:
            if path:
                folders.append(path)
            break
    # 反转列表以保持原始顺序
    folders.reverse()
    return folders

# 示例
path = "/home/user/documents/project/file.txt"
folders = extract_folder_names(path)
print(folders)  # 输出: ['home', 'user', 'documents', 'project']

方法2:使用pathlib模块

pathlib是Python 3.4及以上版本中引入的一个模块,提供了面向对象的路径操作方式。

from pathlib import Path

def extract_folder_names(path):
    # 使用Path对象
    p = Path(path)
    # 获取所有父目录
    folders = [part for part in p.parts if part != '/']
    return folders

# 示例
path = "/home/user/documents/project/file.txt"
folders = extract_folder_names(path)
print(folders)  # 输出: ['home', 'user', 'documents', 'project']

解释

  • os.path.split(path): 将路径分割为两部分:最后一个文件夹或文件名和剩余的路径。通过循环调用这个函数,可以逐步提取出所有的文件夹名称。

  • pathlib.Path(path).parts: Path对象的parts属性返回路径的各个部分,包括根目录(如果有的话)和各个文件夹名称。

注意事项

  • 如果路径中包含根目录(如/C:\),os.path.split方法会将其作为最后一个元素返回,而pathlib.Pathparts属性会将其包含在列表中。
  • pathlib模块提供了更现代和面向对象的API,推荐在新代码中使用。

这两种方法都可以高效地提取文件路径中的所有文件夹名称,选择哪种方法取决于你的具体需求和代码风格偏好。