递归目录搜索 - 未获取正确的当前工作目录(Python)

问题描述 投票:0回答:0

我目前正处于 Python 课程的早期阶段,遇到了困难,希望得到一些指导。问题说明

  1. -编写一个名为 find 的函数或方法,它接受两个名为 path 和 dir 的参数。 path 参数应该接受搜索开始的目录的相对或绝对路径,而 dir 参数应该是要在给定路径中查找的目录的名称。如果您的程序找到具有给定名称的目录,则应显示绝对路径。
  2. 目录搜索应该递归完成。这意味着搜索还应包括给定路径中的所有子目录。

输入示例:

path="./tree", dir="python"

我无法解决它,最后查看了给定的答案,但它似乎也无法正常工作

import os

class DirectorySearcher:
    def find(self, path, dir):
        try:
            os.chdir(path)
        except OSError:
            # Doesn't process a file that isn't a directory.
            return

        current_dir = os.getcwd()
        for entry in os.listdir("."):
            if entry == dir:
                print(os.getcwd() + "/" + dir)
            self.find(current_dir + "/" + entry, dir)


directory_searcher = DirectorySearcher()
directory_searcher.find("./tree", "python")

我在桌面上创建了一些示例文件夹,预期输出是

.../tree/python
.../tree/c/python

我的输出实际上正在产生

C:\Users\abc\Desktop\tree\c\python
C:\Users\abc\Desktop\tree\c\python\python

我创建了以下文件夹

tree ------>c------>python
     ------>python

如果我理解正确的话,代码看起来首先能够提取文件夹 [c,python]。然后它进入 c 目录,找到 python 文件夹,尝试循环并返回到列表 [python] 中的下一个值 - 但此时当前工作目录仍然是它遍历的最后一个目录,即C:\Users bc\桌面重新

python python-3.x object recursion
© www.soinside.com 2019 - 2024. All rights reserved.