在Python中,你可以使用os.path
模块或pathlib
模块来高效地提取文件路径字符串中的所有文件夹名称。以下是两种方法的示例:
os.path
模块import os
def extract_folder_names(path):
# 规范化路径,去除多余的斜杠
normalized_path = os.path.normpath(path)
# 使用 os.path.split 递归拆分路径
folders = []
while True:
normalized_path, folder = os.path.split(normalized_path)
if not folder:
break
folders.append(folder)
# 反转列表以保持原始顺序
folders.reverse()
return folders
# 示例
path = "/home/user/projects/my_project/src/utils"
folders = extract_folder_names(path)
print(folders) # 输出: ['home', 'user', 'projects', 'my_project', 'src', 'utils']
pathlib
模块pathlib
是Python 3.4引入的一个模块,提供了面向对象的路径操作方式,代码更加简洁。
from pathlib import Path
def extract_folder_names(path):
# 创建 Path 对象
path_obj = Path(path)
# 获取所有父目录的名称
folders = [part for part in path_obj.parts if part != path_obj.anchor]
return folders
# 示例
path = "/home/user/projects/my_project/src/utils"
folders = extract_folder_names(path)
print(folders) # 输出: ['home', 'user', 'projects', 'my_project', 'src', 'utils']
os.path.split
和 os.path.dirname
import os
def extract_folder_names(path):
folders = []
while True:
path, folder = os.path.split(path)
if not folder:
break
folders.append(folder)
# 反转列表以保持原始顺序
folders.reverse()
return folders
# 示例
path = "/home/user/projects/my_project/src/utils"
folders = extract_folder_names(path)
print(folders) # 输出: ['home', 'user', 'projects', 'my_project', 'src', 'utils']
os.path
模块:适用于Python 2和3,代码稍显冗长,但功能强大。pathlib
模块:Python 3.4+ 推荐使用,代码简洁且面向对象。根据你的需求和Python版本,选择合适的方法即可。