干净的os.walk-once python方法

干净的os.walk-once python方法,python,os.path,Python,Os.path,我想谈几个目录一次,只是抓住一个目录的信息。目前我使用: i = 0 for root, dirs, files in os.walk(home_path): if i >= 1: return 1 i += 1 for this_dir in dirs: do stuff 这当然是非常乏味的。当我想在它下面走细分曲面时,我用j等做同样的5行 在python中,获取单个目录下所有目录和文件的最短方法是什么?您可以清空目录列表,os.w

我想谈几个目录一次,只是抓住一个目录的信息。目前我使用:

i = 0
for root, dirs, files in os.walk(home_path):
    if i >= 1:
        return 1
    i += 1
    for this_dir in dirs:
       do stuff
这当然是非常乏味的。当我想在它下面走细分曲面时,我用j等做同样的5行

在python中,获取单个目录下所有目录和文件的最短方法是什么?

您可以清空目录列表,os.walk将不会再次出现:

for root, dirs, files in os.walk(home_path):
    for dir in dirs:
        # do something with each directory
    dirs[:] = []  # clear directories.
注意dirs[:]=切片分配;我们正在替换dirs中的元素,而不是dirs引用的列表,以便os.walk不会处理已删除的目录

仅当您将自上而下关键字参数保持为True时,此选项才有效:

当topdown为True时,调用方可以使用del或slice赋值就地修改dirnames列表,walk将只递归到名称保留在dirnames中的子目录中;这可以用来删减搜索,强制执行特定的访问顺序,甚至可以在重新开始walk之前通知walk调用方创建或重命名的目录

或者,您可以自己使用这些名称并将其过滤到目录和文件中:

dirs = []
files = []
for name in os.listdir(home_path):
    path = os.path.join(home_path, name)
    if os.isdir(path):
        dirs.append(name)
    else:
        files.append(name)
您可以清空dirs列表,os.walk将不会再次出现:

for root, dirs, files in os.walk(home_path):
    for dir in dirs:
        # do something with each directory
    dirs[:] = []  # clear directories.
注意dirs[:]=切片分配;我们正在替换dirs中的元素,而不是dirs引用的列表,以便os.walk不会处理已删除的目录

仅当您将自上而下关键字参数保持为True时,此选项才有效:

当topdown为True时,调用方可以使用del或slice赋值就地修改dirnames列表,walk将只递归到名称保留在dirnames中的子目录中;这可以用来删减搜索,强制执行特定的访问顺序,甚至可以在重新开始walk之前通知walk调用方创建或重命名的目录

或者,您可以自己使用这些名称并将其过滤到目录和文件中:

dirs = []
files = []
for name in os.listdir(home_path):
    path = os.path.join(home_path, name)
    if os.isdir(path):
        dirs.append(name)
    else:
        files.append(name)

皮特斯先生,没有比那更容易的了皮特斯先生,没有比那更容易的了