Discuss / Python / 递归法

递归法

Topic source

感悟旅途

#1 Created at ... [Delete] [Delete and Lock User]

# 1.递归法

def find_fname(strs):

    target=list() #输出最后路径+文件名

    def find(strs,path,target=target): 

        os.chdir(path) #切换当前目录到path路径

        for each in os.listdir(os.curdir): #os.curdir为当前目录"."

            if os.path.isfile(each): #如果each 为文件

                if strs in each: #如果字符串strs在each文件名中

                    pstrs=os.path.join(os.path.abspath(os.curdir),each) #获取当前目录绝对路径,并与each文件名合并成最终路径

                    target.append(pstrs) #将得到的路径,加入到最终列表中

            elif os.path.isdir(each): #如果each为目录

                find(strs,each) #递归调用find函数,进入each目录。递归法实际运用中,无需给出each绝对路径,只给出相对路径each自身即可

                os.chdir(os.pardir) #每次递归完成后,均返回上一层目录

        return target

    file_list=find(strs,os.curdir)  #调用内嵌函数,查询当前目录下目标文件及路径。也可以指定路径

    return file_list

print(find_fname("tt")) #调用函数,查找当前路径下,文件名中包含tt字符串的文件


  • 1

Reply