鱼C论坛

 找回密码
 立即注册
查看: 2339|回复: 5

[已解决]关于第30课课后第2题的疑问

[复制链接]
发表于 2020-3-24 21:09:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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)
#getcwd():返回当前路径
#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)


请问为什么要返回上一级目录??
最佳答案
2020-3-24 21:25:25
比如一个路径上有两个文件夹(目录),你进入其中一个遍历完了,那不返回上一级就无法遍历另一个文件夹(目录)了,而且先搜到这个目录然而后面的文件还没搜到这个问题也是存在的,所以在搜完当前目录之后就要返回上一级目录。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-24 21:25:25 | 显示全部楼层    本楼为最佳答案   
比如一个路径上有两个文件夹(目录),你进入其中一个遍历完了,那不返回上一级就无法遍历另一个文件夹(目录)了,而且先搜到这个目录然而后面的文件还没搜到这个问题也是存在的,所以在搜完当前目录之后就要返回上一级目录。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-24 21:40:05 | 显示全部楼层
这一行的上一行进行递归调用,进入一个子文件夹去查找了,返回来的时候,os.curdir已经变成那个子文件夹了,所以需要使用这个语句返回上一层路径,继续查下一个文件或者文件夹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-25 13:29:25 | 显示全部楼层
如果不返回上一层目录,程序就陷在子目录里出不来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-25 18:54:42 | 显示全部楼层
假如有五个坑,其中一个埋了钱袋子。

你是不是搜完这个坑,发现没有,别的坑就不搜了?

是不是还得从坑里退出来,接着找别的坑?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-26 20:02:56 | 显示全部楼层
楼上说的对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-15 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表