|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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) # 使用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)
我也是初学者,看完答案才写出代码,我当时是这么理解的:因为在开始目录下的文件夹中可能还是找不到目标文件,此时‘search_file(each_file, target) # 递归调用’这个语句结束,就要进入‘ os.chdir(os.pardir)返回上一层目录’这个语句,在开始目录下继续搜索。举个例子,假设你的开始目录为文件夹A,里面有且仅有一个文件夹B和目标文件1.txt,B内无任何文件或文件夹。此时程序从B文件夹查找,并且通过递归函数查询B文件夹内部。由于B文件夹内没有任何文件(自然也没有目标文件),所以没有任何输出结果,此时程序自然走到'os.chdir(os.pardir) # 递归调用后切记返回上一层目录',当前工作目录从B文件夹返回到上一级A文件夹,此时再进行查询,才能找到1.txt,程序结束
|
|