python怎么用递归遍历多层目录树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎么用递归遍历多层目录树相关的知识,希望对你有一定的参考价值。

Python实现递归遍历指定文件目录(startdir),从而找到所有与指定的文件或目录(target)名相同的文件或目录的绝对路径。

scandir.py :
#! /usr/bin/python

# filename : scandir.py

# author : Jesse

# update : 2011/08/15 10:16

import os

def scandir(startdir, target) :

os.chdir(startdir)

for obj in os.listdir(os.curdir) :

if obj == target :

print os.getcwd() + os.sep + obj

if os.path.isdir(obj) :

scandir(obj, target)

os.chdir(os.pardir) #!!!

startdir = raw_input(\'Please input startdir: \')

target = raw_input(\'Please input target: \')

scandir(startdir, target)

关于该程序的一点说明:
1. 函数scandir的形参target可以是目录名也可以是文件名。
2. 函数chdir的作用是切换到指定目录,该参数必须是有效的且有访问权限的相对路径或绝对路径。
3. 函数的第五行,使用getcwd函数也是为了取得当前绝对路径。
4. 加号作为字符串的连接符。os.sep根据你的操作系统给出目录分隔符,在GNU/Linux和UNIX上它的返回值是\'/\',在windows上它的返回值是\'\\\\\',在Mac OS上是‘:’,使用os.sep而不直接使用字符,会提高程序的可移植性。
5. 递归调用后,一定不能忘了os.chdir(os.pardir),返回上层目录(即父目录)。

重要:
1. 理解for中的两个并列的if语句,并列是为了解决目标是文件夹时,该目标文件夹中包含符合要求的文件夹。
2. 如果指定目录中存在访问受限的文件或文件夹,该程序会失败,返回无权访问信息。
http://blog.chinaunix.net/uid-26137687-id-2183259.html
参考技术A #coding=utf-8
search_id = '69d0'
search_list = ['id':'0337', 'name':'de', 'parent_id':'None',
'id':'2ddf', 'name':'se', 'parent_id':'None',
'id':'3010', 'name':'12', 'parent_id':'69d0',
'id':'3119', 'name':'121', 'parent_id':'3010',
'id':'3229', 'name':'1211', 'parent_id':'3119',
'id':'3d37', 'name':'14', 'parent_id':'69d0',
'id':'58c8', 'name':'11', 'parent_id':'69d0',
'id':'63b9', 'name':'a','parent_id':'None',
'id':'954c', 'name':'n', 'parent_id':'63b9',
'id':'69d0', 'name':'1', 'parent_id':'954c',
'id':'d2f9', 'name':'13', 'parent_id':'69d0',
'id':'defb', 'name':'test', 'parent_id':'None']
search_ids = []
#例如如果search_id = '69d0' search_ids=[3010,3d37,58c8,d2f9,3119,3229]

def search_pid(pid,id_list,id_results):
for id in id_list:
if id['id'] not in id_results:
if id['parent_id'] in pid:
id_results.append(id['id'])
pid.append(id['id'])
search_pid(pid,id_list,id_results)

search_pid([search_id],search_list,search_ids)
print search_ids

以上是关于python怎么用递归遍历多层目录树的主要内容,如果未能解决你的问题,请参考以下文章

二叉搜索树BST广度优先搜索遍历BFS计算树高度,非递归,binarytree,python

排序二叉树的遍历( 用递归或非递归的方法都可以)

二叉树遍历的递归与非递归算法

binarytree二叉树节点BFS广度优先搜索遍历,递归,python

递归遍历多层次菜单

binarytree二叉树节点DFS深度优先搜索遍历,递归,python