
1,456 Views
Sinopsis
Kalian tentu pernah menggunakan CLI Command Line Interface yaitu command prompt untuk melihat isi sebuah direktori/folder dan file seperti berikut menggunakan perintah , walaupun terlihat sepele namun sangat berguna sekali kalau kalian sedang mencari file/folder secara cepat daripada menggunakan explorer.
Menampilkan di Console
Kalian juga bisa koq menggunakan python untuk membuat tree sendiri seperti hasil berikut.
import os def showFolderTree(path,show_files=False,indentation=2,file_output=False): """ Shows the content of a folder in a tree structure. path -(string)- path of the root folder we want to show. show_files -(boolean)- Whether or not we want to see files listed. Defaults to False. indentation -(int)- Indentation we want to use, defaults to 2. file_output -(string)- Path (including the name) of the file where we want to save the tree. """ tree = [] if not show_files: for root, dirs, files in os.walk(path): level = root.replace(path, '').count(os.sep) indent = '|'*indentation*(level) tree.append('{}{}/'.format(indent,os.path.basename(root))) if show_files: for root, dirs, files in os.walk(path): level = root.replace(path, '').count(os.sep) indent = '|'*indentation*(level) tree.append('{}{}/'.format(indent,os.path.basename(root))) for f in files: subindent='-' * indentation * (level+1) tree.append('{}{}'.format(subindent,f)) if file_output: output_file = open(file_output,'w') for line in tree: output_file.write(line) else: # Default behaviour: print on screen. for line in tree: print (line) folder = 'L:/My BLOG/Ebook Pemrograman Matlab' showFolderTree(folder,show_files=True,indentation=6,file_output=False)
Modul/package yang digunakan yaitu modul os, langsung saja kalian pelajari kode dibawah ini
Berbasis GUI TKinter
Sangat mudah bukan? Tree Folder dan File menggunakan Python, atau kalian bisa mencoba menggunakan Tkinter.
import os import glob import tkinter from tkinter import ttk def populate_tree(tree, node): if tree.set(node, "type") != 'directory': return path = tree.set(node, "fullpath") tree.delete(*tree.get_children(node)) parent = tree.parent(node) special_dirs = [] if parent else glob.glob('.') + glob.glob('..') for p in special_dirs + os.listdir(path): ptype = None p = os.path.join(path, p).replace('\\', '/') if os.path.isdir(p): ptype = "directory" elif os.path.isfile(p): ptype = "file" fname = os.path.split(p)[1] id = tree.insert(node, "end", text=fname, values=[p, ptype]) if ptype == 'directory': if fname not in ('.', '..'): tree.insert(id, 0, text="dummy") tree.item(id, text=fname) elif ptype == 'file': size = os.stat(p).st_size tree.set(id, "size", "%d bytes" % size) def populate_roots(tree): dir = os.path.abspath('L:/').replace('\\', '/') node = tree.insert('', 'end', text=dir, values=[dir, "directory"]) populate_tree(tree, node) def update_tree(event): tree = event.widget populate_tree(tree, tree.focus()) def change_dir(event): tree = event.widget node = tree.focus() if tree.parent(node): path = os.path.abspath(tree.set(node, "fullpath")) if os.path.isdir(path): os.chdir(path) tree.delete(tree.get_children('')) populate_roots(tree) def autoscroll(sbar, first, last): """Hide and show scrollbar as needed.""" first, last = float(first), float(last) if first <= 0 and last >= 1: sbar.grid_remove() else: sbar.grid() sbar.set(first, last) root = tkinter.Tk() vsb = ttk.Scrollbar(orient="vertical") hsb = ttk.Scrollbar(orient="horizontal") tree = ttk.Treeview(root) tree = ttk.Treeview(columns=("fullpath", "type", "size"), displaycolumns="size", yscrollcommand=lambda f, l: autoscroll(vsb, f, l), xscrollcommand=lambda f, l:autoscroll(hsb, f, l)) vsb['command'] = tree.yview hsb['command'] = tree.xview tree.heading("#0", text="Directory Structure", anchor='w') tree.heading("size", text="File Size", anchor='w') tree.column("size", stretch=0, width=100) populate_roots(tree) tree.bind('<<TreeviewOpen>>', update_tree) tree.bind('<Double-Button-1>', change_dir) # Arrange the tree and its scrollbars in the toplevel tree.grid(column=0, row=0, sticky='nswe') vsb.grid(column=1, row=0, sticky='ns') hsb.grid(column=0, row=1, sticky='ew') root.grid_columnconfigure(0, weight=1) root.grid_rowconfigure(0, weight=1) root.mainloop()
Sangat mudah bukan? Tree Folder dan File menggunakan Python, atau kalian bisa mencoba menggunakan Tkinter