#需求 遍历文件夹中所有的子文件夹及子文件--用递归实现

 ''''''
'''
伪代码
1、遍历根目录--listdir for
得到第一级子文件夹(不包含子文件夹的子文件)和文件
2、判断是文件还是文件夹
如果是文件,就直接打印文件名
如果是文件夹(全路径才行),就自己调用自己(递归) 步骤:
1、先实现功能
2、然后进行优化--每一级目录的缩进打印
'''
import os # path1 = r'D:\Program\JetBrains\PycharmProjects\xq_py\全栈16\001' #绝对路径
path1 = r'..\001' #相对路径,..\表示当前目录的上一级目录 .\表示当前目录 #推荐 def for_file(path1,n): #参数1是文件夹路径的根目录,参数2是用于调整层级缩进的
li1 = os.listdir(path1) #1 列出根目录下第一层级的文件夹(不包含其子文件夹和子文件)和文件,返回列表
# print(li1) #['002', '003.py', '005.py', '__init__.py']
for i in li1: # 2遍历循环列表,打印第一次层级的文件夹和文件
full_path1 = os.path.join(path1,i) #3 拼接第一层级的文件夹的全路径
# print(full_path1)
if os.path.isdir(full_path1): #4判断全路径是否是文件夹
print('\t'*n+i) # 4-2 全路径是文件夹的话,打印文件夹的名字(文件夹的名字打印不需要全路径)
for_file(full_path1,n+1) #自己调自己 #5全路径是文件夹的话,自己调用自己--递归
#把第一层级的文件夹当做根目录,
#注意:递归的时候,文件夹必须是全路径,而不能是文件夹名字
#参数2 n+1表示每次递归的时候,缩进都会增加1
else: #6 全路径不是文件夹的话,就是文件,打印文件的名字即可(文件的名字打印不需要全路径)
print('\t'*n+i) #6-2 '\t'表示tab制表符-4个空格的缩进 for_file(path1,1) #7 调用函数,参数1是文件夹根目录的全路径(可以是绝对路径,也可以是相对路径-推荐)
#参数2是用于调整层级缩进的
#根目录下的文件夹(包含其子文件夹和子文件)和文件的层级缩进图
#
#
# 004.py
# __init__.py
# 003.py
# __init__.py
# 003.py
# 005.py
# __init__.py

Python【day 14-2】递归遍历文件夹的更多相关文章

  1. Java File类应用:递归遍历文件夹和递归删除文件

    要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在 若要删除正文文件夹,可以在递归 ...

  2. [C#]递归遍历文件夹

    /// <summary> /// 递归获取文件夹目录下文件 /// </summary> /// <param name="pathName"> ...

  3. linux文件夹操作及递归遍历文件夹

    文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const c ...

  4. TypeScript ES6-Promise 递归遍历文件夹中的文件

    貌似很多人都爱用这个作为写文章的初尝试,那来吧.遍历文件夹下的所有文件,如遍历文件夹下并操作HTML/CSS/JS/PNG/JPG步骤如下:1.传入一个路径,读取路径里面所有的文件:2.遍历读取的文件 ...

  5. python 递归遍历文件夹

    #!/usr/bin/python import os.path def readXmls(folder): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for ...

  6. java File基本操作,以及递归遍历文件夹

    java 的文件操作,相对来说是比较重要的,无论是编写CS还是BS程序,都避免不了要与文件打交道,例如读写配置文件等.虽然现在很多框架都直接帮你做好了这一步! java.io.File 底层是调用与c ...

  7. CentOS下递归遍历文件夹下所有文件,查找指定字符

    命令如下: find . | xargs grep -ri "XXX"

  8. PHP递归和非递归遍历文件夹下文件

    function readDirFiles($dir){ $files= []; $queue=[realpath($dir)]; $currentPath = current($queue); wh ...

  9. SHELL递归遍历文件夹下所有文件

    #!/bin/bash read_dir(){ ` do "/"$file ] then if [[ $file != '.' && $file != '..' ] ...

随机推荐

  1. JS基础语法---数组案例---9个练习

    练习1:求数组中所有元素的和 var arr1 = [10, 20, 30, 40, 50]; var sum = 0; for (var i = 0; i < arr1.length; i++ ...

  2. HTML常用标签二

    图像标签和路径 目录文件夹:普通的文件夹,里面存放了我们做页面需要的相关素材,比如html文件,图片等 根目录:打开目录文件夹的第一层就是根目录 路径 相对路径 以引用文件所在位置为参考基础,而建立出 ...

  3. Qt开源编辑器qsciscintilla的一些用法

    首先放一张自己做的软件中的编辑器的效果图 中间红色的框就是放在Qt的tabwidget控件中的qsciscintilla编辑器 先从官网下载qsciscintilla源码,在qtcreater中编译, ...

  4. Django 的admin

    admin使用 Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: # Application ...

  5. 最短时间(几秒内)利用C#往SQLserver数据库一次性插入10万条数据

    用途说明: 公司要求做一个数据导入程序,要求将Excel数据,大批量的导入到数据库中,尽量少的访问数据库,高性能的对数据库进行存储.于是在网上进行查找,发现了一个比较好的解决方案,就是采用SqlBul ...

  6. Nginx 配置实例-动静分离

    1.什么是动静分离  通过 location 指定不同的后缀名实现不同的请求转发.通过 expires 参数设置,可以使浏 览器缓存过期时间,减少与服务器之前的请求和流量.具体 Expires 定义: ...

  7. python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫

    用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...

  8. CF-55 C.Pie or die

    做法:先把四个角分别覆盖一条边,于是问题转化为判断离边最近的一个点是否离边的距离大于等于4 #include<iostream> #include<cstdio> #inclu ...

  9. 第04组 Alpha事后诸葛亮

    一.组长博客:地址 二.Postmortem模板 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们要解决的问题是让大学生可以通过福鱼网站将暂时无 ...

  10. Office365激活方法(无需密钥)

    @echo off title Activate Office 365 ProPlus for FREE - MSGuides.com&cls&echo =============== ...