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可更便捷地获取磁盘信息并过滤盘符类型:
- 先安装库:
pip install psutil - 运行代码:
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
相关产品推荐
相关产品推荐

