我在注释中有一个名为"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)