小归海 发表于 2020-3-24 21:09:26

关于第30课课后第2题的疑问

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)


请问为什么要返回上一级目录??

Hoiste 发表于 2020-3-24 21:25:25

比如一个路径上有两个文件夹(目录),你进入其中一个遍历完了,那不返回上一级就无法遍历另一个文件夹(目录)了,而且先搜到这个目录然而后面的文件还没搜到这个问题也是存在的,所以在搜完当前目录之后就要返回上一级目录。

sunrise085 发表于 2020-3-24 21:40:05

这一行的上一行进行递归调用,进入一个子文件夹去查找了,返回来的时候,os.curdir已经变成那个子文件夹了,所以需要使用这个语句返回上一层路径,继续查下一个文件或者文件夹

zltzlt 发表于 2020-3-25 13:29:25

如果不返回上一层目录,程序就陷在子目录里出不来了

heidern0612 发表于 2020-3-25 18:54:42

假如有五个坑,其中一个埋了钱袋子。

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

是不是还得从坑里退出来,接着找别的坑?

CZH206 发表于 2020-3-26 20:02:56

楼上说的对
页: [1]
查看完整版本: 关于第30课课后第2题的疑问