Tihool 发表于 2022-2-24 18:45:32

python文件操作系统课后题

import os
File_name = input('请输入待查找的初始目录:')
target_file_name = input('请输入带查找的目标文件:')


def changedir(File_name,target_file_name):
    a = os.chdir(File_name)
    b = os.listdir(File_name)


    for each_one in b:
      if each_one == target_file_name:
            print(os.getcwd()+os.sep+each_one)
      if os.path.isdir(each_one):
            changedir(each_one,target_file_name)
            os.chdir(os.pardir)
changedir(File_name, target_file_name)
看了答案之后自己写的,为什么for循环中的b的位置只能用os.listdir(os.curdir),我这样写就会报错啊

Tihool 发表于 2022-2-24 18:48:48

答案中写的递归后要返回上一层目录也不明白

isdkz 发表于 2022-2-24 18:55:58

第一个问题:因为你在递归的过程中,你已经切换到 File_name 下了,当前目录已经没有 File_name 这个目录了,所以你用File_name就会报错了,你应该是 listdir当前目录的

第二个问题:你切换到了下一级目录,递归到没有目录可以递归了,当然要返回上一级目录了

import os
File_name = input('请输入待查找的初始目录:')
target_file_name = input('请输入带查找的目标文件:')


def changedir(File_name,target_file_name):
    os.chdir(File_name)   # 这里只是切换目录,不需要赋值
    b = os.listdir(".")   # 这里应该用当前目录 .


    for each_one in b:
      if each_one == target_file_name:
            print(os.getcwd()+os.sep+each_one)
      if os.path.isdir(each_one):
            changedir(each_one,target_file_name)
            os.chdir(os.pardir)
changedir(File_name, target_file_name)
页: [1]
查看完整版本: python文件操作系统课后题