Python实战笔记(一) 递归输出目录结构

简介: Python实战笔记(一) 递归输出目录结构

废话不多说,直接上代码

import os
# 第一种方式
def recu_list_dirs_by_dictionary_order(path, indent = 0, maxi = -1):
    '''
        按字典顺序递归输出目录结构
        :param path:   str 文件路径
        :param indent: int 首次缩进空格(默认为 0 ,一般不用改变)
        :param maxi:   int 最大展开层数(默认为 -1,表示全部展开)
    '''
    if maxi != 0:
        try:
            lsdir = os.listdir(path)
        except PermissionError: # 对于权限不够的文件不作处理
            pass
        else:
            for item in lsdir:
                full_path = os.path.join(path, item)
                if os.path.isdir(full_path):
                    print(' ' * indent, '+', item)
                    recu_list_dirs_by_dictionary_order(full_path, indent + 4, maxi - 1)
                if os.path.isfile(full_path):
                    print(' ' * indent, '-', item)
# 第二种方式
def recu_list_dirs_by_file_type(path, indent = 0, maxi = -1):
    '''
        按文件类型递归输出目录结构
        :param path:   str 文件路径
        :param indent: int 首次缩进空格(默认为 0 ,一般不用改变)
        :param maxi:   int 最大展开层数(默认为 -1,表示全部展开)
    '''
    if maxi != 0:
        try:
            lsdir = os.listdir(path)
        except PermissionError: # 对于权限不够的文件不作处理
            pass
        else:
            dirs = [item for item in lsdir if os.path.isdir(os.path.join(path, item))]
            files = [item for item in lsdir if os.path.isfile(os.path.join(path, item))]
            for item in dirs:
                print(' ' * indent, '+', item)
                recu_list_dirs_by_file_type(os.path.join(path, item), indent + 4, maxi - 1)
            for item in files:
                print(' ' * indent, '-', item)
if __name__ == '__main__':
    file_path = input('请输入路径:')
    print('\n---按字典序递归输出目录结构---')
    recu_list_dirs_by_dictionary_order(file_path, 0, 2)
    print('\n---按文件类型递归输出目录结构---')
    recu_list_dirs_by_file_type(file_path, 0, 2)


效果如下

请输入路径:E:\Blog\source       
---按字典序递归输出目录结构---
 + about
     + index
     - index.md
 + archives
     + index
     - index.md
 + categories
     + index
     - index.md
 + images
     - avatar.jpg
 + tags
     + index
     - index.md
 + _data
     - next.yml
     - variables.styl
 + _posts
     - Linux学习笔记(一) 文件系统.md
     - Linux学习笔记(七) 查询系统.md
     - Linux学习笔记(三) 文件权限.md
     - Linux学习笔记(二) 文件管理.md
     - Linux学习笔记(五) 账号管理.md
     - Linux学习笔记(六) 进程管理.md
     - Linux学习笔记(四) vi 编辑器.md
     - Linux实战笔记(一) curl.md
     - Linux实战笔记(二) awk.md
     - Python学习笔记(一) 列表.md
     - Python学习笔记(七) 异常处理.md
     - Python学习笔记(三) 字典.md
     + Python学习笔记(九) map、zip、filter、reduce
     - Python学习笔记(九) map、zip、filter、reduce.md
     - Python学习笔记(二) 字符串.md
     - Python学习笔记(五) 类与对象.md
     - Python学习笔记(八) 文件处理.md
     - Python学习笔记(六) 模块与包.md
     - Python学习笔记(十) 迭代器、生成器、装饰器.md
     + Python学习笔记(四) 函数
     - Python学习笔记(四) 函数.md
---按文件类型递归输出目录结构---
 + about
     + index
     - index.md
 + archives
     + index
     - index.md
 + categories
     + index
     - index.md
 + images
     - avatar.jpg
 + tags
     + index
     - index.md
 + _data
     - next.yml
     - variables.styl
 + _posts
     + Python学习笔记(九) map、zip、filter、reduce
     + Python学习笔记(四) 函数
     - Linux学习笔记(一) 文件系统.md
     - Linux学习笔记(七) 查询系统.md
     - Linux学习笔记(三) 文件权限.md
     - Linux学习笔记(二) 文件管理.md
     - Linux学习笔记(五) 账号管理.md
     - Linux学习笔记(六) 进程管理.md
     - Linux学习笔记(四) vi 编辑器.md
     - Linux实战笔记(一) curl.md
     - Linux实战笔记(二) awk.md
     - Python学习笔记(一) 列表.md
     - Python学习笔记(七) 异常处理.md
     - Python学习笔记(三) 字典.md
     - Python学习笔记(九) map、zip、filter、reduce.md
     - Python学习笔记(二) 字符串.md
     - Python学习笔记(五) 类与对象.md
     - Python学习笔记(八) 文件处理.md
     - Python学习笔记(六) 模块与包.md
     - Python学习笔记(十) 迭代器、生成器、装饰器.md
     - Python学习笔记(四) 函数.md



文章知识点与官方知识档案匹配,可进一步学习相关知识

目录
相关文章
|
2月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
406 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
2月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
269 0
|
2月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
1月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
185 0
|
2月前
|
缓存 监控 API
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
|
2月前
|
存储 数据安全/隐私保护 开发者
Python深浅拷贝全解析:从原理到实战的避坑指南
在Python开发中,深浅拷贝是处理对象复制的关键概念。直接赋值仅复制引用,修改副本会影响原始数据。浅拷贝(如切片、copy方法)创建新容器但共享嵌套对象,适用于单层结构或需共享子对象的场景;而深拷贝(copy.deepcopy)递归复制所有层级,确保完全独立,适合嵌套结构或多线程环境。本文详解二者原理、实现方式及性能考量,帮助开发者根据实际需求选择合适的拷贝策略,避免数据污染与性能浪费。
163 1
|
2月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
61 1
|
2月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
620 1
|
2月前
|
JSON API UED
汇率查询API实战指南:通过Python调用获取多国汇率信息
本文介绍如何通过 Python 快速集成多币种汇率查询接口,实现实时获取全球主要货币汇率数据。适用于跨境电商价格换算、国际贸易结算等场景,帮助提升用户体验并规避汇率波动风险。
472 0
汇率查询API实战指南:通过Python调用获取多国汇率信息
|
2月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
70 0

热门文章

最新文章

推荐镜像

更多