python tree顯示目錄
阿新 • • 發佈:2022-03-10
''' 類似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()