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. 如果指定目录中存在访问受限的文件或文件夹,该程序会失败,返回无权访问信息。
阅读(14375) | 评论(0) | 转发(0) |