1 #需求 遍歷文件夾中所有的子文件夾及子文件--用遞歸實現 2 3 '''''' 4 ''' 5 偽代碼 6 1、遍歷根目錄--listdir for 7 得到第一級子文件夾(不包含子文件夾的子文件)和文件 8 2、判斷是文件還是文件夾 9 如果是文件,就直接列印文件名 10 如果是文件夾(全路徑... ...
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:\Program\JetBrains\PycharmProjects\xq_py\全棧16\001' #絕對路徑 19 path1 = r'..\001' #相對路徑,..\表示當前目錄的上一級目錄 .\表示當前目錄 #推薦 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('\t'*n+i) # 4-2 全路徑是文件夾的話,列印文件夾的名字(文件夾的名字列印不需要全路徑) 29 for_file(full_path1,n+1) #自己調自己 #5全路徑是文件夾的話,自己調用自己--遞歸 30 #把第一層級的文件夾當做根目錄, 31 #註意:遞歸的時候,文件夾必須是全路徑,而不能是文件夾名字 32 #參數2 n+1表示每次遞歸的時候,縮進都會增加1 33 else: #6 全路徑不是文件夾的話,就是文件,列印文件的名字即可(文件的名字列印不需要全路徑) 34 print('\t'*n+i) #6-2 '\t'表示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