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