jack-zheng
12/26/2018 - 4:59 AM

python, package, tree

python, package, tree

Python script to print package tree diagrame

How to use

python tree.py [-f] folder_path

-f: if show file
#! /usr/bin/env python

# tree.py
#
# Written by Doug Dahms
#
# Prints the tree structure for the path specified on the command line

from os import listdir, sep
from os.path import abspath, basename, isdir
from sys import argv

def tree(dir, padding, print_files=False):
    print(padding[:-1] + '+-' + basename(abspath(dir)) + '/')
    padding = padding + ' '
    files = []
    if print_files:
        files = listdir(dir)
    else:
        files = [x for x in listdir(dir) if isdir(dir + sep + x)]
    count = 0
    for file in files:
        count += 1
        print(padding + '|')
        path = dir + sep + file
        if isdir(path):
            if count == len(files):
                tree(path, padding + ' ', print_files)
            else:
                tree(path, padding + '|', print_files)
        else:
            print(padding + '+-' + file)

def usage():
    return '''Usage: %s [-f] <PATH>
Print tree structure of path specified.
Options:
-f      Print files as well as directories
PATH    Path to process''' % basename(argv[0])

def main():
    if len(argv) == 1:
        print(usage())
    elif len(argv) == 2:
        # print just directories
        path = argv[1]
        if isdir(path):
            tree(path, ' ')
        else:
            print('ERROR: \'' + path + '\' is not a directory')
    elif len(argv) == 3 and argv[1] == '-f':
        # print directories and files
        path = argv[2]
        if isdir(path):
            tree(path, ' ', True)
        else:
            print('ERROR: \'' + path + '\' is not a directory')
    else:
        print(usage())

if __name__ == '__main__':
    main()

Output

type command as: python tree.py -f .

+-authentication/
  |
  +-.DS_Store
  |
  +-sittest/
    |
    +-tasks/
    | |
    | +-loginReport/
    |   |
    |   +-loginreportview/
    |     |
    |     +-CheckSacViewStructureTaskData.java
    |     |
    |     +-CheckSacViewStructureTask.java
    |
    +-features/
    | |
    | +-loginReport/
    |   |
    |   +-loginreportview/
    |     |
    |     +-ShowFullContentLoginReportIncludeUserInformationAndLoginTimePeriodImpl.java
    |     |
    |     +-show_full_content_logn_report_include_user_information_and_login_time_period.feature
    |
    +-actions/
      |
      +-loginReport/

Refer

Source From