os.walk 遗漏某些子目录

os.walk missing out certain subdirectories

for dirname, dirnames, filenames in os.walk("C:\",followlinks=True,topdown=True):

    for subdirname in dirnames:    
        os.chdir(os.path.join(subdirname, dirname))

        if os.getcwd()!="C:\Windows\winsxs":
            print(os.getcwd())

如您所见,这段代码应该搜索整个 C 驱动器的所有子目录并更改 Python 的工作目录并显示结果。出于某种原因,我不禁注意到,os.walk 遗漏了很多子目录。它似乎找到了一个大目录树,然后在继续之前只扫描了大约一半(或者至少我检查过的目录就是这种情况,例如桌面)

我已经在网上搜索过了,但似乎找不到其他人遇到过这个问题,非常感谢您的帮助(我是新手编码员)。

编辑:解决方案有效,但现在当我 运行 代码时出现权限错误。

你的加入是错误的。必须是:

os.chdir(os.path.join(dirname, subdirname))

这就是为什么您永远不会进入最高目录级别的原因。

如文档(此处:https://docs.python.org/2/library/os.html#os.walk)所述,要在 dirpath 中获取文件或目录的完整路径,请执行 os.path.join(dirpath, name).

您的加入应该是:

os.chdir(os.path.join(dirname, subdirname))

您的编辑:如果您想搜索所有目录,您可能会发现一些您无权以普通用户身份进入或阅读的目录。如果你想这样做,你可能必须使用你的管理员帐户。