• Python【day 14-2】递归遍历文件夹


     1 #需求 遍历文件夹中所有的子文件夹及子文件--用递归实现
     2 
     3 ''''''
     4 '''
     5 伪代码
     6 1、遍历根目录--listdir  for
     7    得到第一级子文件夹(不包含子文件夹的子文件)和文件
     8 2、判断是文件还是文件夹
     9     如果是文件,就直接打印文件名
    10     如果是文件夹(全路径才行),就自己调用自己(递归)
    11 
    12 步骤:
    13 1、先实现功能
    14 2、然后进行优化--每一级目录的缩进打印
    15 '''
    16 import os
    17 
    18 # path1 = r'D:ProgramJetBrainsPycharmProjectsxq_py全栈1601'  #绝对路径
    19 path1 = r'..01'  #相对路径,..表示当前目录的上一级目录  .表示当前目录   #推荐
    20 
    21 def for_file(path1,n): #参数1是文件夹路径的根目录,参数2是用于调整层级缩进的
    22     li1 = os.listdir(path1) #1 列出根目录下第一层级的文件夹(不包含其子文件夹和子文件)和文件,返回列表
    23     # print(li1)  #['002', '003.py', '005.py', '__init__.py']
    24     for i in li1: # 2遍历循环列表,打印第一次层级的文件夹和文件
    25         full_path1 = os.path.join(path1,i) #3 拼接第一层级的文件夹的全路径
    26         # print(full_path1)
    27         if os.path.isdir(full_path1): #4判断全路径是否是文件夹
    28             print('	'*n+i) # 4-2 全路径是文件夹的话,打印文件夹的名字(文件夹的名字打印不需要全路径)
    29             for_file(full_path1,n+1)  #自己调自己  #5全路径是文件夹的话,自己调用自己--递归
    30             #把第一层级的文件夹当做根目录,
    31             #注意:递归的时候,文件夹必须是全路径,而不能是文件夹名字
    32             #参数2 n+1表示每次递归的时候,缩进都会增加1
    33         else: #6 全路径不是文件夹的话,就是文件,打印文件的名字即可(文件的名字打印不需要全路径)
    34             print('	'*n+i) #6-2 '	'表示tab制表符-4个空格的缩进
    35 
    36 for_file(path1,1) #7 调用函数,参数1是文件夹根目录的全路径(可以是绝对路径,也可以是相对路径-推荐)
    37 #参数2是用于调整层级缩进的
    38 #根目录下的文件夹(包含其子文件夹和子文件)和文件的层级缩进图
    39     # 002
    40     #     003
    41     #         004.py
    42     #         __init__.py
    43     #     003.py
    44     #     __init__.py
    45     # 003.py
    46     # 005.py
    47     # __init__.py
  • 相关阅读:
    POJ 3660 Cow Contest——flody求传递闭包
    最小生成树算法
    最短路练习
    UVa 11491 Erasing and Winning
    uva 1610 聚会游戏
    C#操作Excel
    C#操作Excel文件(转)
    sqlserver行列转换问题(网上搜集)
    ASP.NET常用技术之Cookie
    ASP.NET常用技术之加密解密
  • 原文地址:https://www.cnblogs.com/wangtp/p/11785080.html
Copyright © 2020-2023  润新知