使用Python os.walk遍历C盘仅找到系统文件,无法识别普通文件
问题原因与解决方案
核心问题:路径写法错误
你代码里的os.walk("C:")并不是指向C盘根目录——在Windows系统中,单独的"C:"表示的是C盘的当前工作目录(比如你运行脚本时所在的C盘子目录),而非整个C盘的根目录。这就是为什么你只能遍历到部分系统文件,却无法访问C:/Users这类根目录下的文件夹——脚本根本没从C盘根目录开始遍历。
验证与解决
当你直接使用os.walk("C:/Users")时,这是完整的绝对路径,所以能正常遍历该目录内容。要遍历整个C盘,只需把路径改成绝对路径形式:
- 使用双反斜杠:
os.walk("C:\\")(Python中反斜杠需要转义) - 或者使用正斜杠:
os.walk("C:/")
修改后的完整代码示例:
import os # 注意原代码缺少os模块导入,必须添加 logfile = open("Z:/allfileslog.txt", "w") # 建议把Z:改为Z:/,避免路径歧义 for dirname, dirs, files in os.walk("C:/"): for filename in files: logfile.write(os.path.join(dirname, filename) + '\n') logfile.close()
额外说明
你提到打印dirs能看到Users文件夹,这应该是当前工作目录的子目录列表里偶然出现的,但因为遍历起点不对,脚本不会进入该目录进行深层遍历。修改为根路径后,就能正常遍历包括Users在内的所有C盘目录(只要权限允许)。
内容的提问来源于stack exchange,提问作者NEPTTUNE
相关产品推荐
相关产品推荐

