You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取本地所有文件夹完整路径(含盘符)问题求助

获取带盘符的全路径文件夹列表

要解决这个问题,核心是先获取系统中所有可用的盘符,再逐个遍历每个盘符下的文件夹,而非仅遍历当前盘符的根目录。以下是两种可行实现方式:

方法一:调用系统API获取盘符(无需额外安装库)

通过ctypes调用Windows系统API直接获取所有逻辑盘符,无需依赖第三方库:

import os
import ctypes

def get_all_drives():
    drives = []
    # 调用Windows API获取盘符掩码
    drive_mask = ctypes.windll.kernel32.GetLogicalDrives()
    # 遍历A-Z字母,判断对应盘符是否存在
    for char_code in range(65, 91):
        if drive_mask & (1 << (char_code - 65)):
            drive_path = f"{chr(char_code)}:\\"
            drives.append(drive_path)
    return drives

folders = []
# 遍历每个盘符
for drive in get_all_drives():
    try:
        # 遍历当前盘符下的所有文件夹
        for root, dirs, _ in os.walk(drive):
            for dir_name in dirs:
                full_path = os.path.join(root, dir_name)
                folders.append(full_path)
    except PermissionError:
        # 跳过无访问权限的盘符(如系统保护盘)
        continue

print(folders)

方法二:使用psutil库(更简洁)

若允许安装第三方库,psutil可更便捷地获取磁盘信息并过滤盘符类型:

  1. 先安装库:pip install psutil
  2. 运行代码:
import os
import psutil

folders = []
# 获取所有磁盘分区信息
for partition in psutil.disk_partitions(all=True):
    # 仅处理本地固定磁盘和可移动磁盘,跳过网络盘等
    if 'fixed' in partition.opts or 'removable' in partition.opts:
        try:
            # 遍历当前盘符下的文件夹
            for root, dirs, _ in os.walk(partition.mountpoint):
                for dir_name in dirs:
                    full_path = os.path.join(root, dir_name)
                    folders.append(full_path)
        except PermissionError:
            continue

print(folders)

原代码问题说明

你原代码中root_dir = '\\'在Windows下仅指向程序当前运行所在盘符的根目录,因此遍历结果仅覆盖单个盘符且无盘符前缀;而os.path.abspath()基于当前工作目录转换路径,无法自动关联其他盘符的路径,所以达不到需求。


内容的提问来源于stack exchange,提问作者Zen35X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:16:08