Python【day 14-2】递归遍历文件夹
#需求 遍历文件夹中所有的子文件夹及子文件--用递归实现 ''''''
'''
伪代码
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】递归遍历文件夹的更多相关文章
- Java File类应用:递归遍历文件夹和递归删除文件
要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在 若要删除正文文件夹,可以在递归 ...
- [C#]递归遍历文件夹
/// <summary> /// 递归获取文件夹目录下文件 /// </summary> /// <param name="pathName"> ...
- linux文件夹操作及递归遍历文件夹
文件夹相关函数介绍 //mkdir 函数创建文件夹 #include <sys/stat.h> #include <sys/types.h> int mkdir(const c ...
- TypeScript ES6-Promise 递归遍历文件夹中的文件
貌似很多人都爱用这个作为写文章的初尝试,那来吧.遍历文件夹下的所有文件,如遍历文件夹下并操作HTML/CSS/JS/PNG/JPG步骤如下:1.传入一个路径,读取路径里面所有的文件:2.遍历读取的文件 ...
- python 递归遍历文件夹
#!/usr/bin/python import os.path def readXmls(folder): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 for ...
- java File基本操作,以及递归遍历文件夹
java 的文件操作,相对来说是比较重要的,无论是编写CS还是BS程序,都避免不了要与文件打交道,例如读写配置文件等.虽然现在很多框架都直接帮你做好了这一步! java.io.File 底层是调用与c ...
- CentOS下递归遍历文件夹下所有文件,查找指定字符
命令如下: find . | xargs grep -ri "XXX"
- PHP递归和非递归遍历文件夹下文件
function readDirFiles($dir){ $files= []; $queue=[realpath($dir)]; $currentPath = current($queue); wh ...
- SHELL递归遍历文件夹下所有文件
#!/bin/bash read_dir(){ ` do "/"$file ] then if [[ $file != '.' && $file != '..' ] ...
随机推荐
- Shadow broker=>fuzzbunch+metasploit 攻击外网测试以及metasploit大批量扫描目标IP
0x01 前言 4月14日,影子经纪人在steemit.com上公开了一大批NSA(美国国家安全局)“方程式组织” (Equation Group)使用的极具破坏力的黑客工具,其中包括可以远程攻破全球 ...
- 【转载】如何在Android中避免创建不必要的对象
在编程开发中,内存的占用是我们经常要面对的现实,通常的内存调优的方向就是尽量减少内存的占用.这其中避免创建不必要的对象是一项重要的方面. Android设备不像PC那样有着足够大的内存,而且单个App ...
- mssql sqlserver 数据类型sql_variant简介说明
转自: http://www.maomao365.com/?p=9712 摘要: 下文讲述sqlserver中sql_variant数据类型定义.赋值.应用的相关说明,如下所示: 实验环境:sql ...
- MongoDB安装调试
1:安装 去mongodb的官网http://www.mongodb.org/downloads下载32bit的包 解压后会出现以下文件 在安装的盘C:下建立mongodb文件夹,拷贝bin文件夹到该 ...
- Linux 的 netstat 命令
转载 https://www.cnblogs.com/ct20150811/p/9432043.html 一般用 netstat -lnp |grep "程序名"
- RedisTemplate操作Redis(spring-data-redis)
参看博客:https://www.cnblogs.com/songanwei/p/9274348.html 使用文档:StringRedisTemplate+RedisTemplate使用说明
- VLAN实验(5)三层交换
1.选择1台S5700和3台pc机,并根据实验编址完成此拓扑图. 2.检查连通性 (1)因为mengyu-PC1和mengyu-PC2在一个地址段上,可以ping通 (2)因为mengyu-PC1和m ...
- python3.5.3rc1学习十:网络请求
#sys模块import sys sys.stderr.write('This is stderr text\n')# 因为从定向有缓冲区,所以需要以下这行代码sys.stderr.flush()sy ...
- (day56)八、删除框、批量创建、分页器组件
目录 一.ajax结合sweetalert实现删除按钮的动态效果 二.bulk_create批量插入数据 三.自定义分页器 (一)手动推导 (二)自定义分页器 (1)模板 (2)用法 一.ajax结合 ...
- Eclipse GitHub SSH2 key配置
1. 用Eclipse自带git插件进行配置我们的用户名和密码,即是自己github注册用户. 2.windows -- perferences--General--Network Commectio ...