|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import os
def search_file(start_dir, target) :
os.chdir(start_dir)
for each_file in os.listdir(os.curdir) :
if each_file == target :
print(os.getcwd() + os.sep + each_file) # 使用os.sep使程序更标准
if os.path.isdir(each_file) :
search_file(each_file, target) # 递归调用
os.chdir(os.pardir) # 递归调用后切记返回上一层目录
start_dir = input('请输入待查找的初始目录:')
target = input('请输入需要查找的目标文件:')
search_file(start_dir, target)
我想请问一下,这里这个返回上一级目录是做什么用的呢?
我试了试把这一行删掉,系统运行后没有打印找到的文件路径。求问这里不是应该查找到一个就打印出一个吗?
这是为了配合递归调用自身而设立的。当前目录下如果找到的是文件,那么交给第一条 if 语句来处理;如果找到的是文件夹,那么就会进入这个文件,并把这个文件夹作为当前的工作目录,然后重复执行search_file函数的工作,所以,当search_file函数工作结束,就必须返回上一级目录(也就是回到最初的开始目录),否则就有去无回啊。
简单来说就是一句话:不返回上一级目录递归就完成不了遍历所有文件夹的要求。(万一初始目录下面还有其他文件呢)
|
|