良木 发表于 2020-8-27 15:40:09

jle55555 发表于 2017-11-29 22:24
我也是初学者,看完答案才写出代码,我当时是这么理解的:因为在开始目录下的文件夹中可能还是找不到目标 ...

谢谢

872457373 发表于 2020-9-25 19:20:31

larryho 发表于 2019-8-10 14:05
我自己写的代码和小甲鱼的答案不一样,但结果是一样的,我是这么写的:

def find_target(path, target): ...

这个好理解,甲鱼的那个如果已经执行到最底层,那么返回上一级在执行那不又到了最底层,无法理解

最爱你小海海 发表于 2020-10-23 19:38:41

cys0821 发表于 2019-8-12 01:46
明白了,调用递归函数后,即使里面改变了当前工作目录,外面的函数也受影响,整个函数的工作目录都变了(和 ...

你说的太对了,我看了你的回答之后才明白了为什么要返回上一级目录,十分感谢

bravsheng 发表于 2021-7-20 17:42:19

larryho 发表于 2019-8-10 14:05
我自己写的代码和小甲鱼的答案不一样,但结果是一样的,我是这么写的:

def find_target(path, target): ...

挺好的方法! 感觉更容易理解些!

bravsheng 发表于 2021-7-20 17:50:40

cys0821 发表于 2019-8-12 01:46
明白了,调用递归函数后,即使里面改变了当前工作目录,外面的函数也受影响,整个函数的工作目录都变了(和 ...

我也发现了:虽然能找到文件,都是打印出的目录都变成了最里层那个文件的目录!

bravsheng 发表于 2021-7-20 17:56:30

AmosAlbert 发表于 2019-8-1 07:38
搜索算法的一种,回溯法,顾名思义要回退,回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优 ...

有点共鸣!
我感觉python执行的时候好像是优先去对目录里文件夹进行了搜索,一直往里试探,直到最里层;然后再返回去对上层目录依次判断文件名。 看上去就好像优先进行了递归操作一样。

学渣李某人 发表于 2021-7-20 21:23:24

首先我可以告诉你, 这句会被运行, 因为顶上的函数调用总会结束(不然就无限递归了), 所以还是会继续执行的
你可以试试改下目录结构, 改的奇怪一点, 看有没有区别

LukilyIHY 发表于 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。)
页: 1 [2]
查看完整版本: 遍历文件递归调用后返回上一层目录的疑问