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

Python使用os.walk遍历驱动器时无法获取C盘PNG文件的问题求助

问题排查与解决

嗨,刚看了你的代码,发现两个关键问题导致你只拿到了D盘的PNG文件,还没法访问C盘内容:

1. 驱动器索引逻辑错误

你写的os.walk(drives[0-1])里,0-1计算后是-1,在Python列表里-1表示取最后一个元素,也就是你的['C:\\', 'D:\\']里的D:\\,所以代码只遍历了D盘,完全没碰C盘。

你需要循环遍历所有驱动器,而不是只取单个元素。

2. C盘权限访问问题

Windows系统的C盘里有很多系统目录(比如C:\Windows、C:\Program Files),普通用户权限下直接访问会抛出PermissionError,如果不处理这个异常,程序可能直接中断,或者跳过部分可访问的目录。

修正后的代码

import os

# 先获取系统驱动器列表
drives = [ chr(x) + ":" for x in range(65,91) if os.path.exists(chr(x) + ":") ]
print(f"检测到的驱动器: {drives}")

counter = 0
target_ext = '.png'

# 遍历所有找到的驱动器
for drive in drives:
    print(f"正在遍历驱动器: {drive}")
    try:
        # 遍历当前驱动器下的所有目录和文件
        for root, dirs, files in os.walk(drive):
            for file in files:
                # 用endswith判断后缀,同时转小写避免大小写问题(比如.PNG、.Png)
                if file.lower().endswith(target_ext):
                    counter += 1
                    print(os.path.join(root, file))
    except PermissionError:
        print(f"无权限访问驱动器 {drive} 的部分目录,已跳过")

print(f"总计统计到 {counter} 个PNG文件")

额外优化建议

  • 用file.lower().endswith(target_ext)代替inp in file,避免把比如test.png.txt这类文件误统计进去,同时兼容不同大小写的后缀。
  • 如果统计的文件数量很多,频繁打印路径会拖慢程序,可以考虑只在最后打印总数,或者每统计1000个文件打印一次进度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:04:05