鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: fujia1943

遍历文件递归调用后返回上一层目录的疑问

[复制链接]
发表于 2020-8-27 15:40:09 From FishC Mobile | 显示全部楼层
jle55555 发表于 2017-11-29 22:24
我也是初学者,看完答案才写出代码,我当时是这么理解的:因为在开始目录下的文件夹中可能还是找不到目标 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-25 19:20:31 | 显示全部楼层
larryho 发表于 2019-8-10 14:05
我自己写的代码和小甲鱼的答案不一样,但结果是一样的,我是这么写的:

def find_target(path, target): ...

这个好理解,甲鱼的那个如果已经执行到最底层,那么返回上一级在执行那不又到了最底层,无法理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 19:38:41 | 显示全部楼层
cys0821 发表于 2019-8-12 01:46
明白了,调用递归函数后,即使里面改变了当前工作目录,外面的函数也受影响,整个函数的工作目录都变了(和 ...

你说的太对了,我看了你的回答之后才明白了为什么要返回上一级目录,十分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 17:42:19 | 显示全部楼层
larryho 发表于 2019-8-10 14:05
我自己写的代码和小甲鱼的答案不一样,但结果是一样的,我是这么写的:

def find_target(path, target): ...

挺好的方法! 感觉更容易理解些!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 17:50:40 | 显示全部楼层
cys0821 发表于 2019-8-12 01:46
明白了,调用递归函数后,即使里面改变了当前工作目录,外面的函数也受影响,整个函数的工作目录都变了(和 ...

我也发现了:虽然能找到文件,都是打印出的目录都变成了最里层那个文件的目录!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 17:56:30 | 显示全部楼层
AmosAlbert 发表于 2019-8-1 07:38
搜索算法的一种,回溯法,顾名思义要回退,回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优 ...

有点共鸣!
我感觉python执行的时候好像是优先去对目录里文件夹进行了搜索,一直往里试探,直到最里层;然后再返回去对上层目录依次判断文件名。 看上去就好像优先进行了递归操作一样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-20 21:23:24 | 显示全部楼层
首先我可以告诉你, 这句会被运行, 因为顶上的函数调用总会结束(不然就无限递归了), 所以还是会继续执行的
你可以试试改下目录结构, 改的奇怪一点, 看有没有区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-18 17:01:45 | 显示全部楼层
因为工作目录在调用过程中被改变了,如果不用os.chdir(os.pardir)改变工作目录为上一层目录的话,那么被调用目录的上一层目录内的文件(即与当前被调用目录的同级目录)就不能被访问,(如D:A\\B被调用,那么如果不用os.chdir(os.pardir)得话,就不能回到工作目录D:A,也就不能继续操作D:A\\C、D:A\\D。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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