silver-crow 发表于 2021-2-3 20:44:46

Python入门教程30讲作业2,

def file_judge(file_target,file_path):
    import os
    all_files = os.listdir(file_path) # os.listdir是列举指定目录全部文件名,为下面判断每一个文件是不是文件夹和指定文件做准备
    if file_target in all_files:
      print("目标文件%s在目录%s中" %(file_target,file_path))
    else:
      for each_file in all_files:
            if os.path.splitext(each_file) == "": # isdir 用来判断指定文件是否为文件夹
                file_path = os.path.join(file_path,each_file)
                return file_judge(file_target,file_path)
      print("目标文件%s不在目录%s中" %(file_target,file_path))
可以实现在最后一次递归完成后返回上一级的循环吗?

qiuyouzhi 发表于 2021-2-3 20:53:40

os.chdir(os.pardir)

silver-crow 发表于 2021-2-3 21:04:33

qiuyouzhi 发表于 2021-2-3 20:53


我放在return file_judge(file_target,file_path)下一行了,但是还是没有返回回去

qiuyouzhi 发表于 2021-2-3 21:19:41

silver-crow 发表于 2021-2-3 21:04
我放在return file_judge(file_target,file_path)下一行了,但是还是没有返回回去

为什么要返回上一级呢?

silver-crow 发表于 2021-2-4 08:31:57

qiuyouzhi 发表于 2021-2-3 21:19
为什么要返回上一级呢?

因为不返回的话,如果遇到文件夹递归结束后就不循环了

qiuyouzhi 发表于 2021-2-4 09:07:16

silver-crow 发表于 2021-2-4 08:31
因为不返回的话,如果遇到文件夹递归结束后就不循环了

放在那个else外面试试?

silver-crow 发表于 2021-2-4 10:35:08

本帖最后由 silver-crow 于 2021-2-4 10:38 编辑

qiuyouzhi 发表于 2021-2-4 09:07
放在那个else外面试试?

刚刚试了,也不行
页: [1]
查看完整版本: Python入门教程30讲作业2,