xia1990 发表于 2020-11-7 10:52:27

做小甲鱼的课后题遇到的递归问题

本帖最后由 xia1990 于 2020-11-7 10:53 编辑

如图,两个程序只有标记的判断条件不一样,但是结果却不一样,用 not in 递归不需返回上一层也能找到所有的文件,而用os.path.isdir()递归不返回上一层的话只能沿着一条路径一直向下找,有高手能指点一下这是为什么呢?

suchocolate 发表于 2020-11-7 11:39:37

第一种方式进入递归后工作目录跳到了Ceshi1里没有出来。
回到主函数之后,在Ceshi1里判断Ceshi2是不是目录,因为Ceshi2不存在在Ceshi1里,所以不是目录,就没有检查Ceshi2,

suchocolate 发表于 2020-11-7 12:02:42

只是想实现搜索的话,用os.walk即可:
import os


def search_file(start_dir, find_file):
    for p, d, f in os.walk(start_dir):
      if find_file in f:
            print(p + '\\' + find_file)


if __name__ == '__main__':
    search_file(r'f:\ceshios', 'test1.txt')
页: [1]
查看完整版本: 做小甲鱼的课后题遇到的递归问题