问题如下黄字所示,对递归调用不是很理解
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) # 递归调用后切记返回上一层目录(为什么要返回上一步,还有程序怎么时候才运行到这一步,递归调用search_file()的时候应该没有到这一步吧)
start_dir = input('请输入待查找的初始目录:')
target = input('请输入需要查找的目标文件:')
search_file(start_dir, target)
这一行的上一行不就是递归调用么?
当运行完上一行的递归之后,当前路径os.curdir已经变为深一层的路径,所以需要用这一行将路径复原 sunrise085 发表于 2020-3-24 17:22
这一行的上一行不就是递归调用么?
当运行完上一行的递归之后,当前路径os.curdir已经变为深一层的路径, ...
运行完上一步后程序不就是回到了函数开头位置吗,应该没有运行os.chdir()吧 咸蛋之咸鱼翻身 发表于 2020-3-24 17:38
运行完上一步后程序不就是回到了函数开头位置吗,应该没有运行os.chdir()吧
开始运行上一步程序时,会跳到函数的开头,当执行完之后会返回调用函数的位置。
你该回去学习一下函数的调用。
函数调用,从哪里开始,就从哪里结束。也就是从哪里调用的函数,函数执行完后就返回到哪里 内置运行
页:
[1]