我目前正处于 Python 课程的早期阶段,遇到了困难,希望得到一些指导。问题说明
- -编写一个名为 find 的函数或方法,它接受两个名为 path 和 dir 的参数。 path 参数应该接受搜索开始的目录的相对或绝对路径,而 dir 参数应该是要在给定路径中查找的目录的名称。如果您的程序找到具有给定名称的目录,则应显示绝对路径。
- 目录搜索应该递归完成。这意味着搜索还应包括给定路径中的所有子目录。
输入示例:
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\桌面重新