如何在python中解析目录树?

chu*_*tsu 10 python

我在注释中有一个名为"notes"的目录,我有类别名为"science","maths"......在这些文件夹中是子类别,例如"Quantum Mechanics","Linear Algebra".

./notes
--> ./notes/maths
------> ./notes/maths/linear_algebra
--> ./notes/physics/
------> ./notes/physics/quantum_mechanics
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何将类别和子类别放入两个单独的列表/数组中.

mik*_*iku 15

你可以利用os.walk.

#!/usr/bin/env python

import os
for root, dirs, files in os.walk('notes'):
    print root, dirs, files
Run Code Online (Sandbox Code Playgroud)

天真的两级遍历:

import os
from os.path import isdir, join

def cats_and_subs(root='notes'):
    """
    Collect categories and subcategories.
    """
    categories = filter(lambda d: isdir(join(root, d)), os.listdir(root))
    sub_categories = []
    for c in categories:
        sub_categories += filter(lambda d: isdir(join(root, c, d)), 
            os.listdir(join(root, c)))

    # categories and sub_categories are arrays,
    # categories would hold stuff like 'science', 'maths'
    # sub_categories would contain 'Quantum Mechanics', 'Linear Algebra', ...
    return (categories, sub_categories)

if __name__ == '__main__':
    print cats_and_subs(root='/path/to/your/notes')
Run Code Online (Sandbox Code Playgroud)