|  | 
 
 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
 | 
 |