如何根据子目录获取不同的文件路径列表?

How to get different lists of file paths depending on subdirs?

-Root
--A
---1,2
--B
---3

我正在尝试获取基于子目录的路径列表列表:

[['Root/A/1','Root/A/2'],['Root/B/3']]

我尝试使用 os.walk,但无法正常工作。我可以在一个巨大的列表中获取所有文件的列表,但我无法根据子目录拆分这些文件

fullList = []
for root, dirs, files in os.walk(dir):
        for name in files:
            fullList.append(os.path.join(root, name))

你想要一个列表的列表,但是你创建了一个字符串列表。您需要创建每个内部列表并将它们全部放入一个主列表中。

这个程序可能会做你想做的事:

import os
from pprint import pprint


def return_list_of_paths(dir='.'):
    return [[os.path.join(root, file) for file in files]
            for root, dirs, files in os.walk(dir)
            if files]


pprint(return_list_of_paths("ROOT"))

或者,如果您不关心列表理解:

import os
from pprint import pprint


def return_list_of_paths(dir='.'):
    fullList = []
    for root, dirs, files in os.walk(dir):
        if files:
            oneList = []
            for file in files:
                oneList.append(os.path.join(root, file))
            fullList.append(oneList)
    return fullList


pprint(return_list_of_paths("ROOT"))