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

 ''''''
'''
伪代码
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. [20190524]使用use_concat or_expand提示优化.txt

    [20190524]使用use_concat or_expand提示优化.txt --//上午看了链接https://connor-mcdonald.com/2019/05/22/being-gene ...

  2. emacs require和provide

    Emacs的默认配置文件是.emacs,Emacs启动时会读取并执行.emacs中的LISP代码,用户使用.emacs达到自己的Emacs初始化配置目的. 不过单独使用.emacs有一个问题,因为时间 ...

  3. Dockerfile语法简介

    Dockerfile是由一系列命令和参数构成的脚本,一个Dockerfile里面包含了构建整个image的完整命令.Docker通过docker build执行Dockerfile中的一系列命令自动构 ...

  4. 4. static修饰符

    一.static修饰符概述 1. static修饰的成员表明它属于这个类本身,而不属于该类的单个实例 把static修饰的成员变量和方法称为类变量.类方法 2. 不使用static修饰的成员则属于该类 ...

  5. 浅谈js的类数组对象arguments

    类数组对象:arguments总所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的 ...

  6. 多线程状态与优先级、线程同步与Monitor类、死锁

    一.线程状态 二.线程优先级 三.初步尝试多线程 class Program { static void Main(string[] args) { while (true) { MessagePri ...

  7. 第50 课C++对象模型分析——成员变量(上)

    C++对象模型,其实就是C++中的对象在内存中是如何排布的.C++中的对象包含了成员变量和成员函数,其实就是研究C++中的类对象它的成员变量和成员函数在内存中是如何排布的. 回归本质class 是一种 ...

  8. Python高级特性之:List Comprehensions、Generator、Dictionary and set ...

    今天帅气的易哥和大家分享的是Pyton的高级特性,希望大家能和我一起学习这门语言的魅力. Python高级特性之:List Comprehensions.Generator.Dictionary an ...

  9. ora-01489 字符串连接的结果过长 解决方案

    如下代码,使用listagg进行分组拼接时,常常会报 ora-01489 错误,造成该报错的主要原因是:oracle对字符变量的长度限制,正常情况下,oracle定义的varchar2类型变量的长度不 ...

  10. [C4W1] Convolutional Neural Networks - Foundations of Convolutional Neural Networks

    第一周 卷积神经网络(Foundations of Convolutional Neural Networks) 计算机视觉(Computer vision) 计算机视觉是一个飞速发展的一个领域,这多 ...