Skip to main content

A Python CLI utility for visualizing folder trees with sizes and counts.

Project description

pytree

A Python CLI utility for visualizing folder trees with sizes and counts.

Installation

pytree requires Python version 3.10+ in order to run. You can install pytree in your Python environment with the command:

pip install pytree2

Usage

pytree [-h] [-d] [-s] [-c] [-x EXTENSION] [-k KEYWORD] [-l LEVEL] [start_path ...]
pytree - a python cli utility for visualizing folder trees with sizes and counts

positional arguments:
  start_path            defines path to directory to start building the tree

options:
  -h, --help            show this help message and exit
  -d, --dirs-only       tree displays directories only, and does not show files inside folders
  -s, --show-sizes      tree displays files and folder sizes, in mega or gigabytes
  -c, --show-counts     tree displays the number of files or folders inside each directory
  -x EXTENSION, --extension EXTENSION
                        tree will include only files that match given extension (e.g. ".txt", ".pdf")
  -k KEYWORD, --keyword KEYWORD
                        tree will include only files that contain specific keyword on file name
  -l LEVEL, --level LEVEL
                        defines tree's depth (until which subfolder tree will be created) [0=start_path, -1=all]
  -loc, --lines-of-code
                        tree displays the number of lines of code/comment for .py files in dir
  -o OUTPUT_PATH, --output-path OUTPUT_PATH
                        saves tree as a table in given output path [.csv]

Examples

Basic usage

pytree test_folder
test_folder
├── another_folder
│   ├── empty_folder
│   └── one_mb_file.txt
└── folder
    ├── a_python_file.py
    ├── folder_inside_folder
    │   ├── not_a_text_file.pdf
    │   ├── ten_kb_file.txt
    │   └── two_mb_file.txt
    └── ten_mb_file.txt

Using optional arguments

By concatenating the optional arguments, you can get a clear view of the folder structure. Additionally, pytree will print a summary line in the end, with the folder/file count and total size.

pytree test_folder -dcs
test_folder [2] (13 mb)
├── another_folder [2] (1 mb)
│   └── empty_folder [0] (0 bytes)
└── folder [3] (12 mb)
    └── folder_inside_folder [3] (2 mb)

5 folders, 6 files, 13 mb

Specifying extension/keyword

You can also specify a search keyword (by passing -x your_extension) or keyword (by passing -k your_keyword), e.g:

pytree test_folder -cs -x .pdf
test_folder [2] (136 bytes)
├── another_folder [1] (0 bytes)
│   └── empty_folder [0] (0 bytes)
└── folder [1] (136 bytes)
    └── folder_inside_folder [1] (136 bytes)
        └── not_a_text_file.pdf (136 bytes)

5 folders, 6 files (1 valid), 136 bytes

Notice that by using this option together with the -c and -s flags, the counts and sizes in the final summary line will contain a counter for files matching search criteria, and the total size will reflect only matching files, providing an easy and quick way of scanning folders and identifying large files of a specified extension/keyword.

Saving tree

You can save the tree (file and folder information) by specifying an output path (by passing -o path/to/table.csv), e.g:

pytree test_folder -cs -o tree.csv
test_folder [2] (13 mb)
├── another_folder [2] (1 mb)
│   ├── empty_folder [0] (0 bytes)
│   └── one_mb_file.txt (1 mb)
└── folder [3] (12 mb)
    ├── a_python_file.py (154 bytes)
    ├── folder_inside_folder [4] (2 mb)
    │   ├── another_python_file.py (314 bytes)
    │   ├── not_a_text_file.pdf (136 bytes)
    │   ├── ten_kb_file.txt (10 kb)
    │   └── two_mb_file.txt (2 mb)
    └── ten_mb_file.txt (10 mb)

5 folders, 7 files, 13 mb
Saved output table to "tree.csv"

The output .csv will contain the same information as specified by the keywords, such as level (-l), keyword (-k), size (-s) and dirs_only (-d).

Lines of code

pytree can also be used to obtain the count (and percentage) of lines of code (loc) and comments for python files inside input directory, e.g:

pytree test_folder -c -loc
test_folder [2]
├── another_folder [1]
│   └── empty_folder [0]
└── folder [2]
    ├── a_python_file.py {2 lines of code (33%), 4 comments (67%)}
    └── folder_inside_folder [1]
        └── another_python_file.py {4 lines of code (40%), 6 comments (60%)}

5 folders, 7 files (2 valid), 6 lines of code (38%), 10 comments (62%)

This will provide a lines of code and comments count for all .py files in the tree, as well as a summary for the whole directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytree2-0.4.0.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytree2-0.4.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file pytree2-0.4.0.tar.gz.

File metadata

  • Download URL: pytree2-0.4.0.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for pytree2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 0d09e787930c271a03c7958883f2ad0d2b09bbe9433447f3bcf2718f60787c34
MD5 44bc5b25751f0dea91c0dd487909c020
BLAKE2b-256 0e7f86e0b9c0f98f6dac659867a93e28ee939086cbfcbb76e59b5ac4bafd7638

See more details on using hashes here.

File details

Details for the file pytree2-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: pytree2-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for pytree2-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c195395fd0c502d42eab777a386092e20210740551ebe1524f050a4f52380b46
MD5 b16a0c2e9199eaae40c0df1167972e43
BLAKE2b-256 c6da81245e9e77d5decf09ab70756839aca8f8d2a168b21029dac7334fec9cef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page