Python查找所有包含.txt文件的子目录

mab*_*man 3 python directory

我有一个目录,其中可以包含其他文件夹中的许多文件夹,以及其中的 txt 文件。我想返回至少包含一个 .txt 文件的所有目录的列表。

我正在尝试以下递归方法,但它不起作用:

def getDirectoryList(dir):
    directoryList = []

    # return nothing if dir is a file
    if not os.path.isdir(dir):
        return []

    # add dir to directorylist if it contains .txt files
    if len([file for file in os.listdir(dir) if file.endswith('.txt')])>0:
        directoryList.append(dir)
    for d in os.listdir(dir):
        for x in getDirectoryList(d):
            directoryList.append[x]

    return directoryList
Run Code Online (Sandbox Code Playgroud)

mab*_*man 6

def getDirectoryList(path):
    directoryList = []

    #return nothing if path is a file
    if os.path.isfile(path):
        return []

    #add dir to directorylist if it contains .txt files
    if len([f for f in os.listdir(path) if f.endswith('.txt')])>0:
        directoryList.append(path)

    for d in os.listdir(path):
        new_path = os.path.join(path, d)
        if os.path.isdir(new_path):
            directoryList += getDirectoryList(new_path)

    return directoryList
Run Code Online (Sandbox Code Playgroud)

这是有效的代码。重要的区别是 if "os.path.isdir(os.path.join(path, d)):" 检查以及在递归调用之前添加 path 和 d,因为 os.listdir() 给出名称,而不是路径