1. 程式人生 > 其它 >python tree顯示目錄

python tree顯示目錄

'''
類似Linux下的tree命令
'''
import argparse
import os
import colorama #第三方模組

if __name__ == '__main__':
    colorama.init(autoreset=True,wrap=True)   #啟用顏色模組,並且設定顏色設定自動恢復
    parser = argparse.ArgumentParser(description='處理傳入的檔案路徑,只支援單個路徑。可選項是顯示幾層路徑(預設只顯示一層)')
    parser.add_argument('path',help="這是一個位置引數,輸入需要以樹形式顯示的路徑
",metavar="C:\\Windows") #位置引數path parser.add_argument('-d','--depth',help="這是可選引數,用於控制深入幾層檔案結構。",metavar="2",default=1,type=int,required=False) #可選引數depth,深度 #args = parser.parse_args('C:\\Windows -d 4'.split()) args = parser.parse_args() #print(args) path = args.path hierarchy
= args.depth if len(path) > 0: def show(init_path,hier): ''' 用於顯示結構的,init_path是初始路徑,hier是當前的層級,用來控制輸出多少個'|--' ''' #print(init_path) child_file_list = None try: child_file_list = os.scandir(init_path)
except Exception as e: print(str(e)) if child_file_list == None: return for file_ in child_file_list: if file_.is_dir(): print("{}\033[32m{}\033[0m".format('|--'*hier,file_.name)) if hier < hierarchy: show(init_path=file_.path,hier=hier+1) else: print("{}{}".format('|--'*hier,file_.name)) if os.path.exists(path): print("\033[32m{}\033[0m".format(os.path.basename(path))) show(init_path=path,hier=1) else: print("傳入的路徑不存在。") else: print("為傳入路徑引數!") colorama.deinit()