Membuat View Tree Folder dan File

By | January 14, 2021
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 tree , 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