|
发表于 2025-4-1 23:56:53
|
显示全部楼层
问题解析与修正建议
你这段代码的目的是递归查找某个目录下是否存在指定文件,但存在几个问题:
- 路径拼接错误:`os.listdir(n)` 返回的是文件名,不包含完整路径,导致 `os.path.isfile(each_dir)` 判断的是当前工作目录下的文件。
- 递归路径错误:你没有正确拼接子目录的完整路径。
- 变量命名混乱:`eachdir=each_dir` 这句没有意义。
- 查找到目标文件后没有终止递归:虽然你用了 `break`,但只会跳出当前循环,递归仍会继续。
修正后的代码如下:
- import os
- a = input('请输入待查找的初始目录:')
- b = input('请输入需要查找的目标文件:')
- def find_files(n):
- for each in os.listdir(n):
- full_path = os.path.join(n, each)
- if os.path.isfile(full_path) and os.path.basename(full_path) == b:
- print('找到文件:' + full_path)
- return True
- elif os.path.isdir(full_path):
- if find_files(full_path):
- return True
- return False
- if os.path.isdir(a):
- if not find_files(a):
- print('未找到目标文件')
- else:
- print('请输入目录形式')
复制代码
说明:
- 使用 os.path.join 拼接完整路径。
- 使用 return True 来终止递归。
- 增加了未找到文件时的提示。
如果你还有其他问题,欢迎继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|