[問題] 請問該怎麼改寫這段CODE

看板Python作者 (想辦法突破)時間13年前 (2012/03/14 10:56), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/4 (看更多)
#!/usr/bin/env python3 import os, time root = "/home/myhome" def get_dirs_parent(parent_dir): l1_all = [] des_dir = os.listdir(parent_dir) for i in range(len(des_dir)): if (os.path.isdir(parent_dir+"/"+des_dir[i]) & (str(des_dir[i]) != "CVS")): l1_all.append(parent_dir+"/"+des_dir[i]) #l1_all.append(des_dir[i]) return(l1_all) def get_dirs_hier2(parent_dir): l1_all = get_dirs_parent(parent_dir) l2_all = [] for i in range(len(l1_all)): l2_each = get_dirs_parent(l1_all[i]) for j in range(len(l2_each)): l2_all.append(l2_each[j]) return(l2_all) def get_dirs_hier3(parent_dir): l2_all = get_dirs_hier2(parent_dir) l3_all = [] for i in range(len(l2_all)): l3_each = get_dirs_parent(l2_all[i]) for j in range(len(l3_each)): l3_all.append(l3_each[j]) return(l3_all) dir_all = get_dirs_hier3(root) for i in range(len(dir_all)): print("tc=", i, dir_all[i]) 以上是我想抓出所有在第幾層以下屬於dir的 我知道os.walk可以用 但我想另外寫一個 問題來了!! 我def了三個 get_dirs_parent get_dirs_hier2 get_dirs_hier3. 但我覺得有可能還會有更多 hier4, hier5.... 請問我可不可以寫成類似傳一個參數進去的方式 例如 get_dir_hier(root, 3) 就類似 get_dirs_hier3 get_dir_hier(root, 2) 就類似 get_dirs_hier2 ... 請問該如何改寫CODE? thanks. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 192.203.57.28

03/14 11:32, , 1F
直覺的想法就是用recursive加上標記深度來達成需求
03/14 11:32, 1F

03/14 11:34, , 2F
終止條件就是if depth==n: return
03/14 11:34, 2F
文章代碼(AID): #1FO0ZZV5 (Python)
文章代碼(AID): #1FO0ZZV5 (Python)