Python学习从0到1 day28 Python 高阶技巧 ⑧ 递归

那就祝我们爬不同的山,还能回到同一条路上,不是时时见面,但是时时惦记之人

------ 24.11.13

递归

1.什么是递归

递归在编程中是一种非常重要的算法

递归:即方法(函数)自己调用自己的一种特殊编程写法

函数调用自己,即称之为递归调用

2.递归需要注意什么?

① 注意退出的条件,否则容易变成无限递归

② 注意返回值的传递,确保从最内层,层层传递到最外层

3.os模块的3个方法

os.listdir列出指定目录下的内容

os.path.isdir 判断给定路径是否是文件夹,是返回True,否则返回False

os.path.exists判断给定路径是否存在,存在返回True,否则返回False

4.案例 ------ 递归查找文件

最典型的递归场景为找出一个文件夹中全部的文件。

如图,在文件夹内,有如下嵌套结构和所属的文件,可以通过递归编程的形式完成

文件夹:

------切

------都

------会

------好

------的

------信.txt

------相.txt

------直.txt

------一.txt

我.txt

python 复制代码
'''
演示Python递归操作
需求:通过递归,找出一个指定文件夹内的全部文件
思路:写一个函数,列出文件夹内的全部内容,如果是文件就收集到list
    如果是文件夹,就递归调用自己,再次判断。
'''
import os

'''
    os.listdir      列出文件夹中所有文件
    os.path.isdir        判断路径是否是文件夹
    os.path.exists  判断路径是否存在
'''

def get_files_recursion_from_dir(path):
    '''
    从指定的文件夹中使用递归方式,获取全部的文件列表
    :param path:倍判断的文件夹
    :return:list 包含全部的文件,如果目录不存在或者无文件就返回一个空list
    '''
    file_list = []
    if os.path.exists(path):
        for file in os.listdir(path):
            new_path = path + "/" + file
            if os.path.isdir(new_path):
                file_list += get_files_recursion_from_dir(new_path)
            else:
                file_list.append(new_path)
    else:
        print("你输入的路径有误,文件不存在")
        return []

    return file_list

if __name__ == '__main__':
    print(get_files_recursion_from_dir("E:\python.learning\一"))
相关推荐
传奇开心果编程11 小时前
【Rust入门练中学】第2课:变量、可变性与常量
开发语言·学习·rust
边境悍匪13 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring
Gyr013 小时前
浅刷了一遍51CTO软考题库客观题及其解析(4)
学习·软考·知识点·信息安全工程师
是隼人14 小时前
buuctf-pwn [NewStarCTF 2023 公开赛道]stack migration(64位栈迁移)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
ι:14 小时前
单相桥式全控整流仿真从零复现教学
windows·学习·matlab·simulink
传奇开心果编程15 小时前
【Rust入门练中学】 第3课:数据类型
开发语言·学习·rust
humors22115 小时前
今年我正在看、看完和还没看的书单(不定期更新)
学习·阅读·读书·书单·书籍
泡泡鱼(敲代码中)15 小时前
MySQL 学习笔记:DCL、函数与约束 —— 安全、效率、完整性的三板斧
开发语言·笔记·sql·学习·mysql·gitee
爱吃苹果的日记本16 小时前
数据结构第五课
数据结构·学习
传奇开心果编程18 小时前
【Jetpack Compose基础语法学与练】第6课 TextField文本输入,字符串状态与输入交互
学习·前端框架·kotlin·android jetpack