os.walk()反向?

jdb*_*org 9 python

当我跑步时os.walk(),我得到的结果是字母数字顺序; 从0开始,以z结尾.有可能扭转这种局面吗?

如果我有3个目录; apple/,bananas/,pears/,我想pears/,bananas/apples/返回.

显然我可以将所有目录存储为列表然后.reverse()但这需要很长时间.

NPE*_*NPE 16

首先,os.walk()没有指定目录返回的顺序,所以如果我是你,我就不会依赖于字母顺序.

话虽如此,您可以通过将topdownset设置为其默认值(True),然后dirs就地排序来选择遍历子目录的顺序:

import os
top='/home/aix'
for root, dirs, files in os.walk(top, topdown=True):
  print root
  dirs.sort(reverse=True)
Run Code Online (Sandbox Code Playgroud)

这将os.walk()以其名称的反向词典顺序遍历子目录.

文档解释了如何工作的:

如果topdownTrue,调用者可以修改就地dirnames中列表(可能使用del或切片分配),并且walk()只会递归到他们的名字留在子目录dirnames; 这可用于修剪搜索,强制执行特定的访问顺序,甚至可以walk()walk()再次恢复之前通知调用者创建或重命名的目录.