如何用Python脚本输出系统所有盘符下名为Desktop的文件夹路径列表
全盘符检索Desktop文件夹路径Python实现方案
实现核心分为两步:
- 遍历所有可能的盘符,筛选出当前已挂载的可用盘符
- 对每个可用盘符递归遍历所有子目录,匹配名称为
Desktop的文件夹,收集所有符合条件的路径
完整可运行代码
import os def get_all_mounted_drives(): """获取Windows系统下所有已挂载的盘符""" drives = [] # 遍历A到Z所有盘符,和你提到的bat遍历逻辑完全一致 for drive_letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ': drive_path = f"{drive_letter}:\\" if os.path.exists(drive_path): drives.append(drive_path) return drives def find_desktop_folders(): """检索所有盘符下的Desktop文件夹路径""" target_name = "Desktop" result = [] drives = get_all_mounted_drives() for drive in drives: # 遍历盘符下所有目录,遇到无权限目录自动跳过 for root, dirs, files in os.walk(drive, onerror=lambda x: None): # 只匹配文件夹名称为Desktop的项,排除同名文件 if os.path.basename(root) == target_name: result.append(root) return result if __name__ == "__main__": desktop_paths = find_desktop_folders() print("所有Desktop文件夹路径如下:") for path in desktop_paths: print(path)
关键说明
- 盘符检测逻辑和你提供的bat代码思路一致,不会漏检已挂载的移动硬盘、额外分区等设备
- 用
os.walk实现自动递归遍历所有层级目录,解决了你之前只能单层遍历的问题 - 代码中加入了
onerror=lambda x: None参数,遇到系统无权限访问的目录会自动跳过,不会导致脚本崩溃 - 匹配逻辑会返回所有符合条件的路径,而非仅首个匹配项
可选优化:如果需要加快遍历速度,可以在os.walk循环中添加过滤逻辑,跳过不可能存在Desktop的系统级目录,示例如下:
for root, dirs, files in os.walk(drive, onerror=lambda x: None): # 跳过不需要遍历的系统目录,大幅提升遍历速度 skip_dirs = {'System Volume Information', '$Recycle.Bin', 'Program Files', 'Windows', 'Program Files (x86)'} dirs[:] = [d for d in dirs if d not in skip_dirs] if os.path.basename(root) == target_name: result.append(root)
内容的提问来源于stack exchange,提问作者Sky Net
相关产品推荐
相关产品推荐

