os.walk错过了某些子目录

时间:2015-05-01 15:14:09

标签: python operating-system os.walk

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已经错过了很多子目录。它似乎找到了一个大的目录树,然后在继续之前只扫描了大约一半的目录树(或者至少是我检查过的目录,例如桌面的情况)

我已经搜过网了,但我似乎找不到其他有这个问题的人,我会非常感激一些帮助(我是新手编码员)。

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

1 个答案:

答案 0 :(得分:0)

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

您的加入应该是:

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

编辑:如果要搜索所有目录,您可能会发现一些您无权进入或读取普通用户的权限。如果你想这样做,你可能不得不使用你的管理员帐户。