【发布时间】:2012-01-23 12:31:57
【问题描述】:
我正在尝试使用 pythons os.walk 从任意目录结构中获取文件:
matches = []
for root, dirnames, filenames in os.walk(path):
for filename in fnmatch.filter(filenames, name):
matches.append(os.path.join(root, filename))
print matches
这很好地覆盖了所有文件,但我也希望能够维护实际的文件夹结构,即我想逐个子文件夹遍历子文件夹,所以我实际上知道哪个文件名属于哪个子文件夹。 os.walk 可以做到这一点还是我必须推出自己的功能?
为了澄清我的问题:我想为我解析的目录创建一个程序内部树,所以我想以递归方式实际解析目录树,以便我只遇到每个子目录和文件一次,即:
伪代码:
def createAndParseSubDir(path):
ret = []
files = glob(path)
for file in files:
if isDir(file):
ret.append(createAndParseSubDir(file))
else:
ret.append(file)
return ret
hierarchy = createAndParseSubDir(myRoot)
编辑: 我最终使用了类似上面伪代码的递归函数来确保文件/目录以树状方式解析。
【问题讨论】:
-
[this question][1] 的公认答案为我解决了这个特殊问题。 [1]:stackoverflow.com/questions/2909975/…
标签: python recursion directory