关于第30课课后第2题的疑问
import osdef 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)
请问为什么要返回上一级目录??
比如一个路径上有两个文件夹(目录),你进入其中一个遍历完了,那不返回上一级就无法遍历另一个文件夹(目录)了,而且先搜到这个目录然而后面的文件还没搜到这个问题也是存在的,所以在搜完当前目录之后就要返回上一级目录。 这一行的上一行进行递归调用,进入一个子文件夹去查找了,返回来的时候,os.curdir已经变成那个子文件夹了,所以需要使用这个语句返回上一层路径,继续查下一个文件或者文件夹
如果不返回上一层目录,程序就陷在子目录里出不来了 假如有五个坑,其中一个埋了钱袋子。
你是不是搜完这个坑,发现没有,别的坑就不搜了?
是不是还得从坑里退出来,接着找别的坑? 楼上说的对
页:
[1]