鱼C论坛

 找回密码
 立即注册
查看: 1831|回复: 2

[已解决]做小甲鱼的课后题遇到的递归问题

[复制链接]
发表于 2020-11-7 10:52:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

如图,两个程序只有标记的判断条件不一样,但是结果却不一样,用 not in 递归不需返回上一层也能找到所有的文件,而用os.path.isdir()递归不返回上一层的话只能沿着一条路径一直向下找,有高手能指点一下这是为什么呢?
最佳答案
2020-11-7 11:39:37
第一种方式进入递归后工作目录跳到了Ceshi1里没有出来。
回到主函数之后,在Ceshi1里判断Ceshi2是不是目录,因为Ceshi2不存在在Ceshi1里,所以不是目录,就没有检查Ceshi2,
递归的疑问1.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-7 11:39:37 | 显示全部楼层    本楼为最佳答案   
第一种方式进入递归后工作目录跳到了Ceshi1里没有出来。
回到主函数之后,在Ceshi1里判断Ceshi2是不是目录,因为Ceshi2不存在在Ceshi1里,所以不是目录,就没有检查Ceshi2,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表